项目中难免会对数据库进行操作,现在开源的数据操作库有许多,如Litepal、GreenDao等等,我也用过这其中的几个。一直也没有专门的对它们去做下对比。趁着工作闲暇时间,我专门选择了Litepal、GreenDao、Ormlite库进行对比,选择出一款api比较友好的、性能佳的数据库操作库。
对比数据库操作读写时间
我这里分别用原生的Sql、Litepal、Ormlite、GreenDao,向数据库插入5条和10000条数据,并且记录各个操作执行的时间,作对比。直接上图片:
插入5条数据的读写时间
插入10000条数据的读写时间
通过对比观察,greendao在各个方面的速度都比其它的快,选用greendao作为数据库操作库,比较好。
GreenDao用法
GreenDao老版本的用法很奇葩,是需要一个java工程生成GreenDao操作需要的类。不过最新版本已经改进了这一点,采用注解的方式,非常方便。
具体的用法请直接查看官网:http://greenrobot.org/greendao
- 需要说明的是:更新插入数据最好用greendao自带的api进行操作,因为greendao自带有对象缓存机制,如果用下面这种方式更新数据库表后,在操作完成后,查询处理出来的数据还是保持原样。下面这种用法就需要在更新数据成功后调用getDaoSession().clear()一下。官方说明
|
|
数据库升级方案
GreenDao比较蛋疼的是没有集成数据库升级功能,这个需要自己在onUpgrade方法中实现。
- 大致实现升级的步骤:
- 复制旧Student表为Student_Temp
- 删除旧Student表
- 生成新的Student表
- 计算Student_Temp和新Student表中的公共的列字段提取出来
- 按照公共字段,将Student_Temp表中的值复制到Student表中
|
|
|
|
总结
数据库操作选用GreenDao,并用GreenDao内部的api基本满足大部分需求,如果碰到了特殊情况,也是可以调用GreenDao去执行SQL的。