Exposed: Query
Penjelasan
SEMUA operasi database Exposed WAJIB dibungkus blok transaction { } — di dalamnya, query ditulis lewat DSL mirip SQL: selectAll(), where { }, orderBy(), diakhiri operasi terminal seperti toList() atau firstOrNull().
Contoh Konsep
transaction {
val produkMahal = Produk.selectAll()
.where { Produk.harga greater 50000.0 }
.orderBy(Produk.harga to SortOrder.DESC)
.toList()
val satuProduk = Produk.selectAll()
.where { Produk.nama like "%Kaos%" }
.firstOrNull()
val jumlahHabis = Produk.selectAll()
.where { Produk.stok eq 0 }
.count()
}
Praktikum
Di dalam blok transaction { }, tulis query Exposed yang mengambil semua Artikel yang judul-nya mengandung kata "Ktor" (like), diurutkan dari yang terbaru.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Lupa membungkus operasi Exposed dalam transaction { } akan melempar exception "No transaction in context" — SEMUA akses database (read maupun write) di Exposed HARUS berada di dalam transaksi, bahkan untuk query SELECT sederhana sekalipun, beda dari kebanyakan ORM lain yang query baca biasanya tidak butuh transaksi eksplisit.