这篇文章两个目的一个是为了android开发使用开源数据库框架有个选择标准,一个是郭神的第一行代码中litepal在update时候有点小瑕疵,简单说明一下
后端开发时可能会用到SSH/SSM框架进行开发,其中Hibernate与Mybatis就是对数据库的处理,进行实体类与数据库表的对应,往往用代码生成器生进行二次封装,方便对数据库进行调用;
安卓原生的数据库处理api记忆量大,调用复杂,自己封装后使用也不如Hibernate或者Mybatis使用方便,gitHub出现了多种对应安卓数据库处理框架,选其中最流行的两种litepal与greenDao进行对比分析,方便项目使用时进行选择;
LitePal
litepal是一个sinyu890807与郭神一起开发的,郭神也一直维护,最近一直更新;在郭神的第二行代码中对update
的描述有点问题,在这里简单的说明一下:
第一行代码的update的第一种更新方法:
正确的update应该是litepal的说明文档:链接描述
Album albumToUpdate = LitePal.find(Album.class, 1);
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.save();
Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.update(id);
以上两种更新是按照id进行更新;
Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.updateAll("name = ?", "album");
这个是按照条件进行更新;
经过实测,以上三种更新方法没有问题;
简单的启动说明为了方便查看(CHM格式)
litepal的进阶
litepal 2.0
GreenDao
greendao是德国的一个实验室开发的,eventbus也是他们做的,还做安卓物联网的数据库的第三方,因为不是个人开发,所以文档全也有专门的网站.
Android GreenDao使用教程
greendao的封装
查看数据库
android查看数据库比较繁琐,需要把数据库从手机里拽出来,用sqliteStudio或者其他软件进行查看,或者用命令行工具.
替代方法有两种,一种是facebook的stetho:需要才能使用;另一是Android-Debug-Database:没有试过,有兴趣可尝试,
facebook stetho使用说明
数据库调试 Android-Debug-Database使用说明
litepal与greenDao比较
- greenDao的使用更像Hibernate,从master到session到Dao,命名基本都一致;litepal看不出来(有时间进一步看源码);
- 两者都需要自己编写实体类,litepal直接使用xml进行配置数据库,而greenDao需要用插件生成,
greenDao启动的使用不是很方便,需要自己进行简单的封装,多表查询也需要封装;
- litepal的数据库升级不会抹掉原来的数据,而greenDao会,而数据库升级不擦除原来的数据需要使用数据库升级辅助GreenDaoUpgradeHelper
'com.github.yuweiguocn:GreenDaoUpgradeHelper:v1.2.0'进行依赖,如果额外的学习成本;
- greenDao的查询有懒加载,可以更好的优化内存,litepal没有;
- greenDao使用异步插入或者查询的时候是用rxjava开子线程的,而litepal用线程加接口回调实现,简单看rxjava的源码,greenDao的考虑多线程会多一些;
- 总的来说:greenDao的使用会比litepal会更复杂一些(如多表对应,左右连接,多线程,内存性能优化)更像服务器的hiberate/mybatis框架,如果app有大量数据的数据表与复杂的数据处理,或者考虑扩展性,可以使用greenDao;
而litepal的使用更轻便,而且数据库升级做的不错,也有多线程;
可以根据开源框架不同的特点与app对数据的需求进行选择开源框架;