Kelas Pangkalan Data Room
Cipta dan akses pangkalan data anda.
Kelas Pangkalan Data Room ialah pelajaran Android Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Android Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Android Academy merangkumi sejumlah 4 pelajaran.
Menghubungkan Semuanya
Kelas pangkalan data ialah titik akses utama. Ia menyenaraikan entiti anda, mengisytiharkan versi dan mendedahkan DAO anda.
Anotasi @Database
Cipta kelas abstrak yang melanjutkan RoomDatabase dan anotasikannya dengan @Database.
import androidx.room.Database
import androidx.room.RoomDatabase
@Database(
entities = [User::class],
version = 1
)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}Menyenaraikan Entiti dan Versi
Susunan entities memberitahu Room jadual yang perlu dicipta. Nombor version menjejaki perubahan skema untuk pemindahan.
Mendedahkan DAO
Untuk setiap DAO, isytiharkan fungsi abstrak yang mengembalikan jenis DAO tersebut. Room akan melaksanakannya.
abstract fun userDao(): UserDao
abstract fun noteDao(): NoteDaoMembina Pangkalan Data
Gunakan Room.databaseBuilder untuk mencipta tika. Ia memerlukan konteks aplikasi, kelas dan nama pangkalan data.
val db = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
"app.db"
).build()Jadikannya Singleton
Mencipta pangkalan data memerlukan kos yang tinggi, jadi cipta satu tika untuk keseluruhan aplikasi. Corak biasa menggunakan objek rakan dengan pengambil yang disegerakkan.
companion object {
@Volatile private var INSTANCE: AppDatabase? = null
fun get(context: Context): AppDatabase =
INSTANCE ?: synchronized(this) {
INSTANCE ?: build(context).also { INSTANCE = it }
}
}Kepentingan Singleton
Berbilang tika pangkalan data akan membuka berbilang sambungan ke fail yang sama, lalu menyebabkan ketidakselarasan dan pembaziran memori. Satu tika dikongsi mengekalkan satu sumber kebenaran.
Menyediakannya dengan Hilt
Dalam aplikasi sebenar, anda biasanya menyediakan pangkalan data melalui suntikan kebergantungan (dibincangkan dalam kursus Hilt), bukannya menggunakan singleton manual.
@Provides
@Singleton
fun provideDb(@ApplicationContext ctx: Context) =
Room.databaseBuilder(ctx, AppDatabase::class.java, "app.db")
.build()Perubahan Skema dan Pemindahan
Apabila anda mengubah entiti, naikkan version dan sediakan Migration yang menerangkan SQL untuk mengubah data lama.
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(db: SupportSQLiteDatabase) {
db.execSQL("ALTER TABLE users ADD COLUMN age INTEGER NOT NULL DEFAULT 0")
}
}Pemindahan Musnah
Semasa pembangunan awal, anda mungkin menggunakan fallbackToDestructiveMigration(), yang memadam dan mencipta semula jadual dan bukannya melakukan pemindahan. Jangan sesekali menghantar aplikasi ke pengeluaran dengan data pengguna sebenar apabila menggunakan ini.
Mengakses DAO
Setelah mempunyai tika pangkalan data, dapatkan DAO dan panggil kaedahnya dalam korutin.
val dao = db.userDao()
viewModelScope.launch {
dao.insert(User(1, "Ada", "ada@x.com"))
}Semakan Pantas
Uji pemahaman anda tentang kelas pangkalan data.
Imbas Kembali
Anda telah mempelajari:
@Databasemenyenaraikan entiti, menetapkan versi dan mendedahkan DAO.- Bina pangkalan data dengan
Room.databaseBuildersebagai singleton. - Perubahan skema memerlukan versi yang dinaikkan dan Migration.
Pelajari Kotlin dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 36
- Pelajaran
- 152
Soalan Lazim
Adakah pelajaran “Kelas Pangkalan Data Room” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Android Academy, termasuk “Kelas Pangkalan Data Room”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Android Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Kelas Pangkalan Data Room”?
Cipta dan akses pangkalan data anda. Anda berlatih Android Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Android Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Android Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Kelas Pangkalan Data Room” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Entiti dan DAO
- Kelas Pangkalan Data Room
- Pertanyaan dan Hubungan
- Memerhati Data dengan Flow