文档章节

ORM轻量级框架---ActiveAndroid

Jack_1900
 Jack_1900
发布于 2014/07/29 23:16
字数 926
阅读 2185
收藏 94

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技术,一起壮大我们的微信干货分享社区。

© 著作权归作者所有

Jack_1900
粉丝 225
博文 35
码字总数 34078
作品 1
普陀
程序员
私信 提问
android orm sqlite

http://satyan.github.io/sugar/ 不错,就是文档太恶心鸟 http://greendao-orm.com/features/ http://greendao-orm.com/documentation/how-to-get-started/ 还是greenDao吧。 相比greenDao用......

塔塔米
2015/01/27
0
0
关于ActiveAndroid部署到Android Studio 1.4中的问题

我使用Android Studio 1.4 ,在其中部署ActiveAndroid。是从官网上下载(https://github.com/pardom/ActiveAndroid),在2015年10月20日 下载的。然后我的部署是这样的:(最后出现问题,请指...

葬天尘
2015/10/20
843
2
【android】ActiveRecord スタイルで SQLite を操作-ActiveAndroid

http://guides.codepath.com/android/ActiveAndroid-Guide http://qiita.com/androhi/items/b4bd7d4f791a2150630d...

tianhongyu
2016/03/09
1
0
UltimateAndroid快速开发框架教程

UltimateAndroid是一套集成了许多现有优秀的Android开源类库并将之组合成一个整体的Android快速开发框架。 框架目前主要包含的功能有View Injection,ORM,异步网络请求和图片加载,自动化脚本...

MarshalChen
2014/09/09
2.9K
6
安卓程序后台运行,activeandroid查询本地数据库出错.

安卓程序运行,然后点home键后台运行,不关闭.运行其它程序使内存紧张,然后再回到我的程序,查询本地库sqlite,就会报错空指针异常. 我数据库用的是activeandroid框架.查询代码: List rtn = new ...

周小虎
2014/07/25
593
4

没有更多内容

加载失败,请刷新页面

加载更多

jni接口NewStringUTF崩溃

转载 原文 https://blog.csdn.net/churuxu/article/details/49999575 ndk开发中,将c/c++的UTF8编码的字符串转换成java字符串,使用了NewStringUTF接口。 当字符串中包含emoji字符时,在有些...

shzwork
昨天
3
0
北斗三号IGSO-2卫星发射成功!

6月25日,中国航天科技集团官方公众号宣布,北斗三号IGSO-2卫星发射成功! 航天科技集团表示,6月25日2点09分,我国在西昌卫星发射中心用长征三号乙运载火箭成功将北斗三号第2颗倾斜地球同步...

linuxCool
昨天
3
0
阿里java开发规约的Idea插件安装(英文)

Idea Plugin Prepare Project JDK: 1.7+ Gradle: 3.0+(Require JDK1.8+ for gradle) Build cd p3c-ideagradle clean buildPlugin Run plugin cd p3c-ideagradle runIde# run speci......

Airship
昨天
8
0
很多人转行做程序员选择web前端学习,前端简单在哪里?

不管你是工人阶层还是服务行业,是否想过转行IT,转行IT后肯定会选择一门编程语言进行深入学习,很多转行的人基础都不是太好,不是科班出身,甚至有的是专科乃至中专,前端的HTML和CSS相对其...

智云编程
昨天
2
0
一文读懂内网、公网和NAT

我们做弱电监控系统的时候,都避免不了要跟IP地址打交道,比如摄像头、NVR、服务器等这些设备安装好之后,就需要给它们配上IP,那这个IP地址你了解嘛?今天我们就一起来聊聊什么是内网、公网和...

老孟的Linux私房菜
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部