Room属于Google推出的JetPack组件库中的数据库框架
分析
Realm
高性能, 比SQLite快十倍
支持RxJava/Kotlin
但不支持嵌套类而且要求字段指定默认值, 嵌套数据类我觉得不可或缺
自定义数据库引擎, 故会要求导入JNI库, 会导致apk体积暴增(多个架构平台整合超过5MB)
函数设计比较复杂
官方图形工具相对简陋但实时更新
跨平台, Android/iOS/Mac/Windows
支持监听数据库
DBFlow
主要使用函数操作数据库, 学习成本高
原生支持数据库加密
支持监听数据库
支持协程/Kotlin/RxJava
冷门, 特别是国内
GreenDao
比较落伍, 配置复杂
不支持监听数据表/Kotlin/协程等特性
已经不再积极维护, 官方目前积极维护旗下另外开源数据库ObjectBox
ObjectBox
2. 号称世界最快嵌入式数据库
3. 不支持嵌套对象
4. 体积小(最小压缩到增加体积1MB)
5. 函数设计简单优雅
6. 支持DSL
7. 支持监听数据库
8. 浏览器查看数据库, 仅查看
9. 根据配置生成的JSON文件自动迁移
10. 跨平台, Android/iOS/Mac/Windows/Go
ROOM
主流
支持SQL语句
操作数据库需要编写抽象函数
官方维护, JetPack组件中的数据库框架
监听数据库
支持嵌套对象
支持Kotlin 协程/RxJava
具备SQL语句高亮和编译期检查(具备AndroidStudio的支持)
使用SQLite便于多个平台的数据库文件传递(例如有些联系人信息就是一个SQLite文件)
由于是SQLite可以通过第三方框架进行数据库加密(ROOM原生不支持)
可以配合AndroidStudio自带的数据库查看工具窗口