Kueri dan Relasi
Kuerikan data dan hubungkan entitas.
Kueri dan Relasi adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Melampaui Satu Tabel
Aplikasi nyata memiliki data yang saling berkaitan: seorang pengguna memiliki banyak kiriman, sebuah pesanan memiliki banyak item. Room memodelkannya dengan kunci asing dan anotasi @Relation.
Kueri Berparameter
Masukkan argumen ke dalam @Query dengan awalan titik dua.
@Query("SELECT * FROM users WHERE name LIKE :search")
suspend fun search(search: String): List<User>Mengembalikan Nilai Agregat
Kueri dapat mengembalikan nilai skalar seperti jumlah.
@Query("SELECT COUNT(*) FROM users")
suspend fun count(): IntMendefinisikan Kunci Asing
Entitas anak merujuk ke induknya dengan @ForeignKey. Hal ini menegakkan integritas referensial pada tingkat database.
@Entity(
foreignKeys = [ForeignKey(
entity = User::class,
parentColumns = ["id"],
childColumns = ["userId"]
)]
)
data class Post(
@PrimaryKey val id: Int,
val userId: Int,
val title: String
)Mengindeks Kunci Asing
Room merekomendasikan pengindeksan kolom kunci asing untuk meningkatkan kinerja kueri. Tambahkan @Index.
@Entity(
indices = [Index("userId")]
)
data class Post(/* ... */ val userId: Int)Perilaku onDelete
Tentukan apa yang terjadi pada entitas anak saat induknya dihapus, misalnya CASCADE untuk menghapusnya juga.
ForeignKey(
entity = User::class,
parentColumns = ["id"],
childColumns = ["userId"],
onDelete = ForeignKey.CASCADE
)Memodelkan Relasi Satu-ke-Banyak
Buat kelas yang menggabungkan induk dengan anak-anaknya menggunakan @Embedded dan @Relation.
data class UserWithPosts(
@Embedded val user: User,
@Relation(
parentColumn = "id",
entityColumn = "userId"
)
val posts: List<Post>
)Membuat Kueri Relasi
Kembalikan kelas gabungan dari DAO. Room menjalankan kueri tambahan dan menyatukan objek-objek tersebut.
@Transaction
@Query("SELECT * FROM users")
suspend fun getUsersWithPosts(): List<UserWithPosts>Mengapa @Transaction di Sini
Karena Room menjalankan dua kueri (induk, lalu anak), membungkus metode dengan @Transaction akan memastikan snapshot yang konsisten tanpa penulisan yang terselip di antaranya.
Relasi Banyak-ke-Banyak dengan Tabel Penghubung
Untuk relasi banyak-ke-banyak (siswa dan kursus), gunakan tabel penghubung dan parameter associateBy dari @Relation.
@Relation(
parentColumn = "studentId",
entityColumn = "courseId",
associateBy = Junction(Enrollment::class)
)
val courses: List<Course>Ringkasan Relasi
@ForeignKeymenerapkan integritas dan aturan kaskade.@Relation+@Embeddedmenyusun objek yang saling terkait.@Transactionmenjaga konsistensi pembacaan yang terdiri dari beberapa kueri.
Pemeriksaan Singkat
Uji pemahaman Anda tentang relasi.
Rangkuman
Anda telah mempelajari:
- Memberi parameter pada kueri dengan
:namedan mengembalikan hasil agregat. @ForeignKeymenerapkan integritas dengan aturanonDelete.@Relation+@Embeddedmembangun objek yang saling terkait; bungkus pembacaan dengan@Transaction.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kueri dan Relasi” gratis?
Ya — teks lengkap “Kueri dan Relasi” 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 “Kueri dan Relasi”?
Kuerikan data dan hubungkan entitas. 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 3 dari 4.
Berapa lama pelajaran “Kueri dan Relasi” 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