【5年Android从零复盘系列之三十】Android存储(5):数据库sqlite database
【代码是最好的老师】
1.概述
- SQLite 是Android平台轻量级的关系型数据库;
- 效率高、资源占用小
- 原生操作SQLite需要借助SQLiteOpenHelper帮助类,实际开发一般使用数据库框架
- 商用的成熟框架有greendao3+、litepal、DBFlow以及另辟蹊径的Realm
2.greendao
greendao具有以下优点,是搭建项目框架时的首选:
- 存取速度快
- 支持加密
- 轻量、api极简
- 支持缓存
- 中间代码自动生成,代码编写量小
- 开源至今,经历千锤百炼,稳定可靠
3.LitePal
LitePal是郭霖大神开源的一款数据库框架。
LitePal同greendao一样,有共同的优点。
区别在,不同数据量、不同操作情形下,性能和资源占用各有些许差别。不过在2020+年代了,这些细微差别已经几乎是无感。
具体商用中,追求稳定,会更多地选择greendao。其缘由并不是LitePal弱势,而是greendao的有较大的使用基数,使其趋于完美。而LitePal后起之秀,及版本迭代,使用基数、开源考验度较小。
4.Realm
Realm是专门为移动端设计的框架,支持ios/android
具有使用简单,性能优异,跨平台等优点,其中跨平台是其相对其他数据库的最大优势。
But,
- Realm不支持联合主键;
- 跨线程不能使用同一个realm实例;
- 存取只能以对象为单位
- 不支持自增长主键
- 对查询结果的修改都会被直接同步到数据库中
因此项目架构阶段需要权衡数据使用情况,再考虑使用Realm跨平台数据库
5.DBFlow
DBFlow是一个注解化(AnnotationProcessing)的ORM框架:
- 同Springboot一样的编码思维,让开发更专注于逻辑而不是死板的db代码
- 支持同步/异步/事务操作
- 支持自定义数据库储放路径
- 使用灵活、简洁,可读性高
- 编译期代码生成,运行时对性能是零损耗的,不逊于其他数据库框架
- 支持懒加载
- 【大招】可以直接注解化生成content provider依赖Schematic库