Transaction
- Kotlin kursu
- İleri seviye
- Ders 33/83
- 5 dk
transaction bloğu ile SQL işlemlerini öğrenirsin.
Transaction nedir?
Transaction, Exposed'da tüm veritabanı işlemlerinin yapıldığı bloktur. Bir transaction { ... } çağrısı blok açar; bitince işlem tamamlanır.
Örnek: transaction { Users.insert { it[name] = "Ayşe" } }. Bu bloğun sonunda insert otomatik olarak commit edilir. Blok içinde bir istisna fırlarsa işlem geri alınır (rollback). Bu, veritabanı tutarlılığını korur. Exposed, transaction içindeki tüm sorguların aynı bağlantıyı kullanmasını sağlar. Transaction dışında sorgu çalıştırılamaz.
Transaction kullanımı
Tüm veritabanı işlemleri transaction { ... } bloğu içinde yapılır. Exposed, bu bloğun sonunda işlemi otomatik commit eder.
Örnek: transaction { val user = Users.select { Users.id eq 1 }.first(); println(user[Users.name]) }. Bu blok bir kayıt okur ve adını yazdırır. Birden fazla işlem tek transaction içinde yapılırsa hepsi atomik olur; ya hepsi başarılı ya hiçbiri. Bu özellik, para transferi gibi tutarlılık gerektiren senaryolarda anlamlıdır. transaction bir suspending fonksiyon değildir; senkron çalışır.
Uygulama Transaction bloğu aç
Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver") ile bağlantı aç. transaction { ... } bloğu içinde println("İşlem hazır") yazdır.
Başlangıç kodu
// Transaction
// buraya yaz
import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.transactions.transaction
fun main() {
}Örnek çözüm
fun main() {
Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")
transaction {
println("İşlem hazır")
}
}Beklenen çıktı
İşlem hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Transaction parçalarını eşle
| Kavram | Anlamı |
|---|---|
transaction |
İşlem bloğu |
commit |
Yazma |
rollback |
Geri alma |
insert |
Kayıt ekleme |
2 Transaction bloğu bittiğinde ne olur?
- Otomatik commit edilir Doğru cevap
- İşlem geri alınır
- Bağlantı kapanır
- Yeni transaction açılır
Açıklama: Transaction bitince otomatik commit olur.
3 transaction bloğunu tamamla
____ {
Users.insert { it[Users.name] = "Ayşe" }
}
transaction {
Users.insert { it[Users.name] = "Ayşe" }
}
Açıklama: transaction ile veritabanı işlemi açılır.