Android ORM 和 ContentProvider对比
来源:互联网 发布:朝阳群众知乎 编辑:程序博客网 时间:2024/05/16 10:53
对于数据库操作大家有时候在犹豫到底该用ContentProvider或者DataBase ORM。
我在这简单的对比一下。可能由于自己的水平有限。可能有错误的地方希望大家指出!谢谢!
ContentProvider优势
1、如果你想把你的数据跟其他进程、程序共享。就要用android提供的contentProvider接口来做。
2、ContentProvider是Android提供的一个贯穿各个模块的通信接口,通信模式。有各种权限机制。可以有更高安全性。 数据访问是通过URI模式访问。返回Cursor数据。这个模式在SearchView,CursorLoader,CursorAdapter,云同步AsyncAdapter等地方用到了。不用ContentProvider这些要手动去实现。
3、ContentObserver模型。当数据发生改变的时候去通知某个URI 该数据发生改变。实时的一个监听效果。
ContentProvider缺陷
1、如果结构不好。dataBase的数据表项发生改变。需要重写很多代码。(借鉴android系统的方式,比如contactProvider等)每张表单独写出表项。这样重构会减少这个缺点。但是相对代码量比较大。
2、速度会比较慢一点。因为uri机制。getContentResolver()会先去系统查找一遍。这个查询过程是缓慢一点,性能受影响不大。
ORM
比较广泛ORM ORMLite,GreenDao,androm等。
最受关注的就是ORMLite 和 GreenDao
ORMLite:http://www.appbrain.com/stats/libraries/details/ormlite/ormlite
GreenDao:http://www.appbrain.com/stats/libraries/details/greendao/greendao
ORM的优势:
1、代码可以写得很少。CURD的支持完善。外键创建也比较方便。相对于ContentProvider代码少很对,很方便维护。
2、速度快,尤其是在大量数据实例化的时候。
虽然ContentProvider有ContentProviderClient.applyBatch(ArrayList<ContentProviderOperation> operations)的批量执行方法。但是还有有差距。
ORM的缺点就是不具备ContentProvider的android生态系统内的组件支持。
ORMLite和GreenDao对比:
GreenDao和ORMLite在CURD的操作上是相似的。 只是初始化不同。
因为GreenDao是通过代码设置数据库table的属性。而ORMLite是通过注解的方式,也就是反射的方式执行。
所以ORMLite 代码更简洁。GreenDao相对而言复杂一点。 因为ORMLite是反射机制会变慢一些,jar的体积也要大一些。
总结:就是根据不同的需求选择不同的解决方案。
混合解决方案:
ORM和ContentProvider 有人就像结合到一起用。
但是这2个方案不能同时使用。因为Database的连接一般是单例模型。不然出错率很高。
看看Git给出的解决方案:https://github.com/jakenjarvis/Android-OrmLiteContentProvider
对于这3种的简单实现,并且性能对比:http://blog.csdn.net/u012565107/article/details/21546829
0 0
- Android ORM 和 ContentProvider对比
- Android ORM数据库框架对比
- Android ContentProvider和getContentResolver
- Android ContentProvider和getContentResolver
- Android ContentProvider和Uri
- android之ContentResolver和ContentProvider
- Android ContentProvider和Uri详解
- Android ContentProvider和Uri详解
- Android ContentProvider和Uri详解
- 【Android】ContentProvider和Uri详解
- Android ContentProvider和Uri详解
- Android ContentProvider和Uri详解
- Android ContentProvider和Uri详解
- Android ContentProvider和Uri详解
- Android Service和ContentProvider测试
- JFinal ORM和Hibernate功能特点对比分析
- Python ORM 之间对比
- Orm框架介绍和常见的Android Orm框架
- 陶氏海水淡化膜元件各型号优点介绍
- cin>>如何检查输入
- ExtJS做Ajax请求数据量大的时候出现超时
- 利用Yslow查看网站性能
- 重建控制文件,redo log 不可用 恢复
- Android ORM 和 ContentProvider对比
- 《高效学习OpenGL》 之 压缩纹理图像 glGetTexLevelParameter(),glCompressedTexImage2D()
- 何伊凡:猪、土豪与屌丝
- MySQL免安装配置方法
- linux下crontab的使用方法
- 都谁在用hadoop
- SignalR实现服务器推送信息:广播与“组播”
- SmartWeatherAPI_Lite_WebAPI C# 获取key加密
- jquery悬浮提示框