Kelas Basis Data Room
Buat dan akses basis data Anda.
Kelas Basis Data Room adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.
Menghubungkan Semuanya
Kelas database adalah titik akses utama. Kelas ini mencantumkan entitas, mendeklarasikan versi, dan mengekspos DAO Anda.
Anotasi @Database
Buat kelas abstrak yang mewarisi RoomDatabase dan beri anotasi @Database.
import androidx.room.Database
import androidx.room.RoomDatabase
@Database(
entities = [User::class],
version = 1
)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}Mencantumkan Entitas dan Versi
Array entities memberi tahu Room tabel mana yang harus dibuat. Angka version melacak perubahan skema untuk migrasi.
Mengekspos DAO
Untuk setiap DAO, deklarasikan fungsi abstrak yang mengembalikan tipe DAO tersebut. Room akan mengimplementasikannya.
abstract fun userDao(): UserDao
abstract fun noteDao(): NoteDaoMembangun Database
Gunakan Room.databaseBuilder untuk membuat instans. Fungsi ini memerlukan konteks aplikasi, kelas, dan nama database.
val db = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
"app.db"
).build()Menjadikannya Singleton
Membuat database membutuhkan biaya besar, jadi buat satu instans untuk seluruh aplikasi. Pola yang umum menggunakan objek pendamping dengan pengambil yang disinkronkan.
companion object {
@Volatile private var INSTANCE: AppDatabase? = null
fun get(context: Context): AppDatabase =
INSTANCE ?: synchronized(this) {
INSTANCE ?: build(context).also { INSTANCE = it }
}
}Mengapa Singleton Penting
Beberapa instans database akan membuka beberapa koneksi ke file yang sama, sehingga menyebabkan ketidakkonsistenan dan pemborosan memori. Satu instans bersama mempertahankan satu sumber kebenaran.
Menyediakannya dengan Hilt
Dalam aplikasi nyata, biasanya Anda menyediakan database melalui injeksi dependensi (dibahas dalam kursus Hilt), bukan menggunakan singleton manual.
@Provides
@Singleton
fun provideDb(@ApplicationContext ctx: Context) =
Room.databaseBuilder(ctx, AppDatabase::class.java, "app.db")
.build()Perubahan Skema dan Migrasi
Saat mengubah entitas, naikkan version dan sediakan Migrasi yang menjelaskan 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")
}
}Migrasi Destruktif
Selama tahap awal pengembangan, Anda dapat menggunakan fallbackToDestructiveMigration(), yang menghapus dan membuat ulang tabel alih-alih melakukan migrasi. Jangan pernah mengirimkan ini ke produksi bersama data pengguna sebenarnya.
Mengakses DAO
Setelah memiliki instans database, dapatkan DAO dan panggil metodenya di dalam coroutine.
val dao = db.userDao()
viewModelScope.launch {
dao.insert(User(1, "Ada", "ada@x.com"))
}Pemeriksaan Singkat
Uji pemahaman Anda tentang kelas database.
Ringkasan
Anda telah mempelajari:
@Databasemencantumkan entitas, menetapkan versi, dan mengekspos DAO.- Bangun dengan
Room.databaseBuildersebagai singleton. - Perubahan skema memerlukan versi yang dinaikkan dan sebuah Migrasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kelas Basis Data Room” gratis?
Ya — teks lengkap “Kelas Basis Data Room” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kelas Basis Data Room”?
Buat dan akses basis data Anda. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Kelas Basis Data Room” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Entitas dan DAO
- Kelas Basis Data Room
- Kueri dan Relasi
- Mengamati Data dengan Flow