Kotlin Academy · Pelajaran

DAO Exposed: Class Entiti dan Hubungan

Gunakan API DAO untuk memetakan jadual kepada class entiti dan menavigasi hubungan.

Pelajaran 4 daripada 413 langkah

DAO Exposed: Class Entiti dan Hubungan ialah pelajaran Kotlin Academy percuma di CoddyKit. Ini ialah pelajaran 4 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 Kotlin Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.

Apakah Lapisan DAO Exposed?

Lapisan DAO (Objek Akses Data) Exposed membungkus DSL Pertanyaan dengan API gaya Active Record. Anda mentakrifkan subkelas Entity yang dipetakan kepada baris jadual, kemudian membaca dan menulis sifat secara terus pada tika Entity.

Mentakrifkan Entity

Gandingkan LongIdTable dengan subkelas Entity. Setiap kelas Entity mempunyai objek pendamping EntityClass yang mengendalikan kueri:

object Users : LongIdTable("users") {
    val name  = varchar("name", 100)
    val email = varchar("email", 255)
}

class User(id: EntityID<Long>) : LongEntity(id) {
    companion object : LongEntityClass<User>(Users)
    var name  by Users.name
    var email by Users.email
}

Mencipta Entity

Gunakan Entity.new { } di dalam transaction { } untuk mencipta baris baharu dan mendapatkan tika Entity:

val alice: User = transaction {
    User.new {
        name  = "Alice"
        email = "alice@example.com"
    }
}

Mencari Entity

Objek pendamping EntityClass menyediakan kaedah pencarian: findById(id), all(), dan find { condition }:

transaction {
    val user: User? = User.findById(1L)
    val allUsers: SizedIterable<User> = User.all()
    val filtered = User.find { Users.name like "Al%" }.toList()
}

Mengemas Kini Entity

Baca satu Entity, ubah sifatnya di dalam transaksi, dan Exposed akan mengeluarkan UPDATE secara automatik apabila transaksi dilakukan:

transaction {
    val user = User.findById(1L) ?: error("Not found")
    user.name = "Alice Smith"
    // UPDATE issued on transaction commit
}

Memadam Entity

Panggil entity.delete() di dalam transaksi untuk membuang baris yang sepadan:

transaction {
    User.findById(5L)?.delete()
}

Hubungan Satu-ke-Banyak

Rujuk Entity induk daripada Entity anak menggunakan reference() pada jadual dan sifat terwakil yang menggunakan by pada Entity. Akses senarai anak daripada induk melalui referrersOn:

object Posts : LongIdTable("posts") {
    val title    = varchar("title", 300)
    val authorId = reference("author_id", Users)
}
class Post(id: EntityID<Long>) : LongEntity(id) {
    companion object : LongEntityClass<Post>(Posts)
    var title  by Posts.title
    var author by User referencedOn Posts.authorId
}
// On User entity:
val posts by Post referrersOn Posts.authorId

Hubungan Banyak-ke-Banyak

Gunakan jadual gabungan perantaraan. Dedahkannya sebagai EntityClass dan akses kedua-dua sisi menggunakan via():

object UserRoles : Table("user_roles") {
    val user = reference("user_id", Users)
    val role = reference("role_id", Roles)
}
// On User entity:
var roles by Role via UserRoles

Pemuatan Awal vs Tertangguh

Secara lalai, Exposed memuatkan Entity berkaitan secara tertangguh — setiap capaian mencetuskan kueri SQL. Gunakan load() atau with() untuk memuatkan hubungan lebih awal dan mengelakkan masalah kueri N+1:

transaction {
    User.all().with(User::posts).forEach { user ->
        println("${user.name}: ${user.posts.count()} posts")
    }
}

Penyimpanan Sementara dalam Transaksi

Exposed menyimpan tika Entity dalam transaksi. Mengakses Entity yang sama mengikut ID beberapa kali dalam satu transaksi mengembalikan objek dalam memori yang sama — tiada perjalanan pergi balik berlebihan ke pangkalan data.

Bila Menggunakan DAO atau DSL Pertanyaan

Gunakan lapisan DAO apabila anda mahukan corak capaian berorientasikan objek dengan hubungan. Gunakan DSL Pertanyaan untuk operasi pukal, cantuman kompleks, pengagregatan, atau apabila prestasi penting dan anda mahukan kawalan SQL yang tepat.

Semakan Ringkas

Bagaimanakah anda mencipta baris baharu dan mendapatkan tika Entity dengan serta-merta menggunakan DAO Exposed?

Ringkasan: Entity DAO Exposed — Kelas Entity dan Hubungan

Perkara utama:

  • Gandingkan LongIdTable dengan subkelas LongEntity; sifat diwakilkan kepada takrifan lajur
  • Entity.new { } — cipta; findById(), find { }, all() — buat kueri; entity.delete() — buang
  • Satu-ke-banyak: referencedOn (sisi anak), referrersOn (sisi induk)
  • Banyak-ke-banyak: jadual gabungan + via()
  • Gunakan with() untuk memuatkan hubungan lebih awal dan mengelakkan kueri N+1
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
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “DAO Exposed: Class Entiti dan Hubungan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kotlin Academy, termasuk “DAO Exposed: Class Entiti dan Hubungan”, 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 Kotlin Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “DAO Exposed: Class Entiti dan Hubungan”?

Gunakan API DAO untuk memetakan jadual kepada class entiti dan menavigasi hubungan. Anda berlatih Kotlin 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 Kotlin Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Kotlin 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 4 daripada 4.

Berapa lamakah pelajaran “DAO Exposed: Class Entiti dan Hubungan” 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 Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin 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. Persediaan Exposed: Sambungan Pangkalan Data dan DSL Transaksi
  2. Mentakrifkan Jadual dengan DSL Table
  3. CRUD dengan DSL Pertanyaan: insert, select, update, delete
  4. DAO Exposed: Class Entiti dan Hubungan
← Kembali ke Kotlin Academy