ORM轻量级框架---ActiveAndroid
ORM即Object-Relational Mapping,对象关系映射。简单理解就是把我们Java的对象与数据库里面的记录进行映射,可以把实体对象持久化到数据库中,也能把查询到的记录映射成Java对象。ORM让我们彻底解放,一点也不需要再去编写冗长晦涩的Sql语句,一切都是通过框架去做,不得不说是程序员的一大福音。
ORM框架实现的原理其实也很简单,就是利用Java的反射机制把对象和数据库记录映射关联起来。比如存储的时候,是把对象的属性取出来作为记录的属性值进行插入;而查询的时候则是把查询条件自动构建成一条Sql语句,把查询到的结果集转成对象列表。J2EE有ibatis,Hibernate框架,我们Android也有GreenDAO,ormlite,xUtils,AFinal等。它们的实现原理都一样,不同的也只是细节方面的处理。如果兴趣的同学,推荐阅读下ActiveAndroid的源码。Reading the fucking code!
以前写过介绍xUtils的系列文章,其中的FinalDb模块就是一个ORM框架,也是我工作中常用的。今天我们介绍的ActiveAndroid的API也是相当的简单友好,而且功能一样的强大。ActiveAndroid简洁的API给人一种用起来很舒服的感觉,今天主要是介绍下关于CRUD的简单使用。
一、初始化
有两种方式,一种是配置AndroidManifest的application的name属性,同时在meta-data标签中可选的配置db的name和version;二是在自己的Application类中继承ActiveAndroid的Application;前两种方式入侵性太强,还有一种只需在自定义的Application中静态的注入两个方法即可。
二、定义实体类
实体类需继承Model,可自定义表名和属性对应的字段名
三、插入
可以实现单条数据插入,也可以批量插入,同时也支持事务。
四、删除
支持基于引用的单条记录删除,也支持根据条件进行批量删除。
五、更新
自Model中继承来的save方法,不仅可以进行insert、还可以update;同时也能基于条件进行批量的更新。
六、查询
ActiveAndroid的查询API基本与sql语句的关键字一致,比较友好。这点和xUtils是一样的
写在最后:ORM框架使用起来确实是很方便的,给我们编码提高了效率,但是也有着致命弊端。前面我们也介绍了ORM的实现的原理是Java的反射机制,反射有个缺点,就是会造成效率不高、耗时较长的现象。当有数据批量操作的时候,会把耗时加长好几倍。所以当遇到业务中有很多的记录要处理的时候,就不推荐大家使用框架了,还是老老实实的写比较靠谱。今天干货分享到此为止,希望可以帮助到大家。
如果觉得对你有所帮助,欢迎大家订阅我的微信公众账号——Android干货分享(ID:android_share)。下面是微信的二维码,为你提供及时高质的Android干货。技术交流QQ群:318588906,欢迎大家加群,共同探讨下Android和Java技术,一起壮大我们的微信干货分享社区。
ORM轻量级框架---ActiveAndroid的更多相关文章
- Android轻量级ORM框架ActiveAndroid入门教程(转)
注:没有找到出处,如有侵犯,请告知 开始ActiveAndroid神奇之旅: 在AndroidManifest.xml中我们需要添加这两个 AA_DB_NAME (数据库名称,这个name不能改,但是 ...
- Farseer.net轻量级ORM开源框架 V1.x 教程目录
本篇教程将以Ver 1.x版本进行详细使用讲解 大家有任何疑问可以加入我们的官方QQ群进行讨论.QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net 整个 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射 下一篇:Farseer.net轻量级ORM开源 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射 下一篇:Farseer.net轻量级ORM ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作 下一篇:Farseer.net轻量级ORM开源 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:表的数据操作 下一篇:Farseer.net轻量级ORM开源框 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库上下文
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置文件 下一篇:Farseer.net轻量级ORM开源 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:表的数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:表实体类映射 下一篇:Farseer.net轻量级ORM开源框 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:表实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库上下文 下一篇:Farseer.net轻量级ORM开源框 ...
随机推荐
- Android图片加载框架最全解析(四),玩转Glide的回调与监听
大家好,今天我们继续学习Glide. 在上一篇文章当中,我带着大家一起深入探究了Glide的缓存机制,我们不光掌握了Glide缓存的使用方法,还通过源码分析对缓存的工作原理进行了了解.虽说上篇文章和本 ...
- golang包管理工具及环境管理工具;如何下载外网的依赖包
简介: golang的包管理工具类似于java的maven.python的pip.js的npm,可以实现依赖包的统一管理:有很多:govendor.godep.glide,挑一个自己喜欢的用吧.mac ...
- mac下使用brew安装java等应用
可以使用brew安装很多应用,比如java,idea,iterms,sublime brew tap caskroom/versions 将会安装新的brew仓库源brew cask install ...
- 【BZOJ】【1006】【HNOI2008】神奇的国度
弦图最小染色/MCS算法 Orz PoPoQQQ (UPD:ydc的写法好像更熟悉一些……(类似堆优化的Dij啊~ 先留个坑……明天再看一看……感觉好神奇>_<(完美消除序列之于弦图 就 ...
- [12] 扇形体(Fan)图形的生成算法
顶点数据的生成 bool YfBuildFunVertices ( Yreal radius, Yreal degree, Yreal height, Yuint slices, YeOriginPo ...
- [leetcode]Convert Sorted Array to Binary Search Tree @ Python
原题地址:http://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题意:将一个排序好的数组转换为一颗二叉 ...
- AndroidManifest 中android:exported
假设Service等的AndroidManifest中声明为android:exported="false" 则该服务不可以跨进程使用. Permission De ...
- CentOS上编译安装OpenCV-2.3.1与ffmpeg-2.1.2
已測试环境: CentOS 6.3 32bit CentOS 6.5 64bit 以前在CentOS 6.3 32bit安装过OpenCV,參见CentOS 6.3中安装OpenCV2.3.1,现在换 ...
- [Javascript]1. Improve you speed! Loop optimaztion
/** Improve you loop code */ var treasureChest = { goldCoins: 10000, magicalItem : "Crown of Sp ...
- 控制系统音量,自己定义MPVolumeView
近期有一个需求,就是控制系统的音量,我们都知道原理在mediaPlayer.framework框架下,有方法 <span style="font-size:18px;"> ...