0Pricing
Android Academy · Pelajaran

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

Mendefinisikan 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

  • @ForeignKey menerapkan integritas dan aturan kaskade.
  • @Relation + @Embedded menyusun objek yang saling terkait.
  • @Transaction menjaga konsistensi pembacaan yang terdiri dari beberapa kueri.

Pemeriksaan Singkat

Uji pemahaman Anda tentang relasi.

Rangkuman

Anda telah mempelajari:

  • Memberi parameter pada kueri dengan :name dan mengembalikan hasil agregat.
  • @ForeignKey menerapkan integritas dengan aturan onDelete.
  • @Relation + @Embedded membangun 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

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