Amaliy qism.
Yangi Google Maven ombori orqali xonaga bog'liqlik mavjud. Uni asosiy build.gradle faylingizdagi omborlar ro'yxatiga qo'shing:
allprojects { repositories {
google() jcenter()
}
}
Xuddi shu fayldagi Xona kutubxonasining versiyasini aniqlang. U hozirda alfada, lekin versiya yangilanishlari uchun ishlab chiquvchi sahifalarini kuzatib boring.:
ext {
roomVersion = '2.1.0-alpha03'
}
App / build.gradle fayliga Xona uchun bog'liqliklar qo'shing:
dependencies { implementation
“android.arch.persistence.room:runtime:$rootProject.roomVersion” annotationProcessor
“android.arch.persistence.room:compiler:$rootProject.roomVersion” androidTestImplementation
“android.arch.persistence.room:testing:$rootProject.roomVersion”
}
Xonaga ko'chib o'tish uchun biz ma'lumotlar bazasi versiyasini oshirishimiz va foydalanuvchi ma'lumotlarini saqlash uchun Migratsiya sinfini amalga oshirishimiz kerak. Migratsiyani tekshirish uchun biz sxemani eksport qilishimiz kerak. Buning uchun app / build.gradle faylingizga quyidagi kodni qo'shing:
android { defaultConfig {
...
// used by Room, to test migrations javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
// used by Room, to test migrations sourceSets {
androidTest.assets.srcDirs +=
files("$projectDir/schemas".toString())
}
...
Xona har bir sinf uchun @Entity bilan belgilangan jadval yaratadi. Sinfdagi maydonlar jadvaldagi ustunlarga mos keladi. Shunday qilib, sub'ekt sinflari odatda hech qanday mantiqni o'z ichiga olmaydigan kichik model sinflardir. Bizning User klassimiz ma'lumotlar bazasidagi ma'lumotlar modelini ifodalaydi. Keling, Xonaga ushbu sinf asosida jadval yaratish kerakligini aytish uchun uni yangilaylik.:
@Entity bilan sinfga izoh bering va jadval nomini o'rnatish uchun tableName xususiyatidan foydalaning.
@PrimaryKey izohini to'g'ri maydonlarga qo'shib, asosiy kalitni o'rnating - bizning holatimizda bu foydalanuvchi identifikatori.
@ColumnInfo (name = "column_name") izohidan foydalanib, sinf maydonlari uchun ustun nomini o'rnating. Agar maydonlar allaqachon nomlangan bo'lsa, ustun nomlanishi kerak bo'lsa, siz bu bosqichni o'tkazib yuborishingiz mumkin.
Agar sinfda bir nechta konstruktorlar bo'lsa, @Ignore annotatsiyasini qo'shib, Xonaga qaysi birini ishlatish va qaysi birini ishlatmaslik kerakligini aytib bering.
@Entity(tableName = "users") public class User {
@PrimaryKey @ColumnInfo(name = "userid") private String mId;
@ColumnInfo(name = "username") private String mUserName;
@ColumnInfo(name = "last_update") private Date mDate;
@Ignore
public User(String userName) {
mId = UUID.randomUUID().toString(); mUserName = userName;
mDate = new Date(System.currentTimeMillis());
}
public User(String id, String userName, Date date) { this.mId = id;
this.mUserName = userName; this.mDate = date;
}
...
}
|