对于数据库操作大家有时候在犹豫到底该用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

更多相关文章

  1. Android视频通话Java代码
  2. android 程序安装路径选择
  3. 【项目总结】-Android(安卓)Service用法总结
  4. android之ContentProvider和Uri详解
  5. Android(安卓)NDK安装教程:
  6. android 单元测试方法 类继承 Instrumentation
  7. Android之AIDL实现Demo
  8. smem在Android中的使用
  9. [原]Android应用程序绑定服务(bindService)的过程源代码分析

随机推荐

  1. Android(安卓)NDK 开发教程四:TwoLibs示例
  2. Android(安卓)查看Android源码版本
  3. Android(安卓)5.0学习之定义阴影
  4. Android之Bitmap 高效加载
  5. android BaseAdapter中改变某个item的部
  6. Android(安卓)内功心法(1.9)——java设计
  7. android studio 3.2---NDK配置
  8. Android(安卓)TextView加载HTMl图文之添
  9. android Device Admin以及hasSystemFeatu
  10. 【Android】 WiFi 无线调试