DAO Exposed: Class Entiti dan Hubungan
Gunakan API DAO untuk memetakan jadual kepada class entiti dan menavigasi hubungan.
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.authorIdHubungan 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 UserRolesPemuatan 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
LongIdTabledengan subkelasLongEntity; 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
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
- Persediaan Exposed: Sambungan Pangkalan Data dan DSL Transaksi
- Mentakrifkan Jadual dengan DSL Table
- CRUD dengan DSL Pertanyaan: insert, select, update, delete
- DAO Exposed: Class Entiti dan Hubungan