0Pricing
Android Academy · Pelajaran

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(): NoteDao

Membangun 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:

  • @Database mencantumkan entitas, menetapkan versi, dan mengekspos DAO.
  • Bangun dengan Room.databaseBuilder sebagai 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

  1. Entitas dan DAO
  2. Kelas Basis Data Room
  3. Kueri dan Relasi
  4. Mengamati Data dengan Flow
← Kembali ke Android Academy