Android Academy · Pelajaran

Kelas Pangkalan Data Room

Cipta dan akses pangkalan data anda.

Pelajaran 2 daripada 413 langkah

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

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

  • @Database menyenaraikan entiti, menetapkan versi dan mendedahkan DAO.
  • Bina pangkalan data dengan Room.databaseBuilder sebagai singleton.
  • Perubahan skema memerlukan versi yang dinaikkan dan Migration.
Percuma untuk bermula

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

  1. Entiti dan DAO
  2. Kelas Pangkalan Data Room
  3. Pertanyaan dan Hubungan
  4. Memerhati Data dengan Flow
← Kembali ke Android Academy