如果您的应用处理大量结构化数据,那么在本地保留这些数据会带来许多好处。最常见的使用场景是缓存相关的数据,这样一来,当设备无法访问网络时,您仍然可以在离线状态下浏览该内容。
Room 持久性库在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。
设置 Room 2.x
如需在应用中使用 Room 2.x,请将以下依赖项添加到应用的 build.gradle 文件:
dependencies {
val room_version = "2.6.1"
implementation("androidx.room:room-runtime:$room_version")
annotationProcessor("androidx.room:room-compiler:$room_version")
// To use Kotlin Symbol Processing (KSP)
// ksp("androidx.room:room-compiler:$room_version")
// optional - Kotlin Extensions and Coroutines support for Room
implementation("androidx.room:room-ktx:$room_version")
// optional - RxJava2 support for Room
implementation("androidx.room:room-rxjava2:$room_version")
// optional - Guava support for Room, including Optional and ListenableFuture
implementation("androidx.room:room-guava:$room_version")
// optional - Test helpers
testImplementation("androidx.room:room-testing:$room_version")
}
主要组件
Room 有三个主要组件:
- 数据库类 ,用于保存数据库并作为应用持久性数据底层连接的主要访问点。
- 数据实体 ,用于表示应用的数据库中的表。
- 数据访问对象 (DAO) ,为您的应用提供在数据库中查询、更新、插入和删除数据的方法。
图 1 说明了 Room 的不同组件之间的关系。
实现示例
// Entity
@Entity
data class User(
@PrimaryKey