一、Room简介
Room是Google推出的数据库框架,Google Android 官方团队去维护
Room是一个 ORM (Object Relational Mapping)对象关系映射数据库
使用ORM可以让开发者更加关注业务逻辑,而不是SQL 语句。
ORM ROOM 是当前最值得使用的Android数据库框架。
二、Android开发常用的数据库
国内Android开发常用的数据库有GreenDao,Realm,DBFlow,LitePal.
2.1 GreenDao
缺点是配置复杂,不支持监听数据表/Kotlin/协程等特性,且目前已经不再积极维护。
2.2 Realm
不是基于SQLite ,底层用C语言写的,号称速度比 SQLite 快 10 倍。
跨平台,支持多种平台设备,支持RxJava/Kotlin, 但不支持嵌套类而且要求字段指定默认值。
要求导入JNI库, 会导致apk体积增加, 函数设计比较复杂, 官方图形工具相对简陋但实时更新。
2.3 DBFlow
主要使用函数操作数据库, 学习成本高,原生支持数据库加密,支持监听数据库,支持协程/Kotlin/RxJava, 在国内比较冷门。
2.4 LitePal
是国内Android开发者郭霖开源并维护的,也是对SQLite数据库的再次封装,方便调用。
三、Room Vs SQLite
Room底层还是对SQLite的封装。 Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。
四、Room的优点
具体来说,Room 具有以下优势:
- 优秀的效率,支持内存映射,支持LiveData绑定
- 编译期检查
(Room会在编译的时候验证每个@Query和@Entity等
它不仅检查语法问题,还会检查是否有该表
这就意味着几乎没有任何运行时错误的风险) - 简化了数据库迁移路径。
五、Room的三大组件
Room 包含三个主要组件
5.1 数据库类(DataBase)
用于保存数据库并作为应用持久性数据底层连接的主要访问点。
5.2 数据实体(Entity)
用于表示应用的数据库中的表。
5.3 数据访问对象 (DAO)
提供您的应用可用于查询、更新、插入和删除数据库中的数据的方法。