Android 数据库之 Room(五)
一、简介
Room 是 Google 推出的数据库框架。该持久型类库在SQLite的基础上提供了一个抽象层,允许流畅的访问SQLite数据库,全面强大的直接SQLite。
- SQL 查询在编译期就会验证;
- 较少的模板代码;
- 支持 LiveData 集成。
二、集成
- 在项目级别的
build.gradle
中:
buildscript {
repositories {
maven {
url "https://maven.google.com"
}
// 或 google()
}
}
allprojects {
repositories {
maven {
url "https://maven.google.com"
}
// 或 google()
}
}
- 在模块级别(如
app
模块)的build.gradle
中:
apply plugin: 'com.android.application'
// 或者 apply plugin: 'com.android.library'
android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
// room的数据库概要、记录
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
}
dependencies {
compile 'androidx.room:room-runtime:2.0.0'
annotationProcessor 'androidx.room:room-compiler:2.0.0'
}
三、架构分析
Room 主要有3个部分:
- Database : 包含数据库持有者,并作为应用程序持久关系数据的基础连接的主要访问点。
- DAO : 数据库访问对象,实现具体的增删改查。
- Entity : 具体的bean实体,会与数据库表column进行映射。
引入代码:
- 引入 Database 类:
@Database(entities = {
SimpleEntity.class, SimpleIndexedEntity.class},
version = 1, exportSchema = false)
public abstract class NormalDatabase extends RoomDatabase {
public abstract SimpleEntityDao getSimpleEntityDao();
public abstract SimpleIndexedEntityDao getSimpleIndexedEntityDao();
}
- 引入 DAO 类:
@Dao