安卓数据库开源框架 litepal 与greenDao之间比较

这篇文章两个目的一个是为了android开发使用开源数据库框架有个选择标准,一个是郭神的第一行代码中litepal在update时候有点小瑕疵,简单说明一下

后端开发时可能会用到SSH/SSM框架进行开发,其中Hibernate与Mybatis就是对数据库的处理,进行实体类与数据库表的对应,往往用代码生成器生进行二次封装,方便对数据库进行调用;
安卓原生的数据库处理api记忆量大,调用复杂,自己封装后使用也不如Hibernate或者Mybatis使用方便,gitHub出现了多种对应安卓数据库处理框架,选其中最流行的两种litepal与greenDao进行对比分析,方便项目使用时进行选择;

LitePal

litepal是一个sinyu890807与郭神一起开发的,郭神也一直维护,最近一直更新;在郭神的第二行代码中对update
的描述有点问题,在这里简单的说明一下:

第一行代码的update的第一种更新方法:

安卓数据库开源框架 litepal 与greenDao之间比较_第1张图片
安卓数据库开源框架 litepal 与greenDao之间比较_第2张图片

正确的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对数据的需求进行选择开源框架;

你可能感兴趣的:(安卓数据库开源框架 litepal 与greenDao之间比较)