Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i
Bir veritabanına bağlanın, Exposed'i yapılandırın ve kodu işlemler içinde yürütün.
Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Exposed Nedir?
Exposed, JetBrains tarafından Kotlin için geliştirilmiş hafif bir SQL çatısıdır. İki düzey sunar: Sorgu DSL'si (tür güvenli SQL ifadeleri) ve DAO katmanı (Active Record tarzı varlıklar). Her ikisi de açıkça belirtilen işlemler içinde çalışır.
Exposed Bağımlılıklarını Ekleme
Çekirdek kitaplığını, JDBC sürücü köprüsünü ve kullandığınız veritabanı sürücüsünü ekleyin:
dependencies {
implementation("org.jetbrains.exposed:exposed-core:0.52.0")
implementation("org.jetbrains.exposed:exposed-jdbc:0.52.0")
implementation("org.jetbrains.exposed:exposed-dao:0.52.0")
implementation("com.h2database:h2:2.2.224") // or postgresql driver
implementation("com.zaxxer:HikariCP:5.1.0") // connection pooling
}Veritabanına Bağlanma
Başlangıçta Database.connect() işlevini bir kez çağırın. Üretim ortamında bir HikariDataSource aktarın; testler için basit bir JDBC URL'si yeterlidir:
import org.jetbrains.exposed.sql.Database
// Simple (dev/test)
Database.connect(
url = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1",
driver = "org.h2.Driver"
)
// Production with HikariCP
Database.connect(HikariDataSource(HikariConfig().apply {
jdbcUrl = "jdbc:postgresql://localhost/mydb"
username = "user"
password = "pass"
maximumPoolSize = 10
}))İşlem { } Bloğu
Tüm Exposed işlemleri bir transaction { } bloğu içinde çalıştırılmalıdır. Exposed, işlem başarılı olduğunda değişiklikleri onaylar; yakalanmamış herhangi bir hatada ise geri alır:
transaction {
// all DB operations here
SchemaUtils.create(Users)
}Korutinlerle Uyumlu İşlemler
Korutinlerle uyumlu işlemler için exposed-r2dbc içindeki newSuspendedTransaction { } işlevini veya exposed-spring-boot-starter paketini kullanın. Ktor'da engelleyici Exposed çağrılarını withContext(Dispatchers.IO) { transaction { ... } } içine alın:
suspend fun findUser(id: Long): User? = withContext(Dispatchers.IO) {
transaction {
UserEntity.findById(id)?.toUser()
}
}SchemaUtils: Tabloları Oluşturma ve Silme
Var olmayan tabloları oluşturmak için SchemaUtils.create(Table1, Table2), tabloları silmek için SchemaUtils.drop() kullanın. Bunu uygulama başlangıcında bir transaction { } içinde çağırın:
transaction {
SchemaUtils.create(Users, Posts, Comments)
}Ktor'da Bağlantı Yapılandırma
Veritabanını bir Application modülünde başlatın; böylece sunucu başladığında bir kez çalışır:
fun Application.configureDatabase() {
val dbUrl = environment.config.property("ktor.database.url").getString()
Database.connect(dbUrl, driver = "org.postgresql.Driver",
user = "...", password = "...")
transaction { SchemaUtils.create(Users) }
}İşlem Yalıtım Düzeyleri
Daha güçlü veya daha zayıf tutarlılık garantilerine ihtiyaç duyduğunuzda transaction() işlevine bir yalıtım düzeyi aktarın:
transaction(Connection.TRANSACTION_SERIALIZABLE) {
// serializable isolation
}İç İçe İşlemler
Varsayılan olarak iç içe transaction { } çağrıları dış işlemin parçası olur. Bağımsız bir işlem elde etmek için transaction(db, outerTransactionIsEmpty = false) { } veya bir kayıt noktası kullanın.
SQL Günlükleme
Geliştirme sırasında oluşturulan sorguları görmek için SQL günlüklemeyi etkinleştirin. İşlem bloğunun içinde bir StdOutSqlLogger veya özel bir günlükleyici ayarlayın:
transaction {
addLogger(StdOutSqlLogger)
// ...
}Bağlantı Havuzu İçin En İyi Uygulamalar
Üretim ortamında her zaman HikariCP (veya benzeri bir çözüm) kullanın. maximumPoolSize değerini sunucunuzun iş parçacığı sayısına göre ayarlayın ve havuz tükendiğinde hızlıca başarısız olmak için connectionTimeout değerini yapılandırın. Üretim ortamında havuz kullanımını izleyin.
Hızlı Kontrol
Exposed'da bir transaction { } bloğu içinde yakalanmamış bir hata oluşursa ne olur?
Özet: Exposed Kurulumu ve İşlem DSL'si
Önemli noktalar:
- Başlangıçta
Database.connect()ile bir kez bağlanın (üretim ortamında HikariCP kullanın) - Tüm veritabanı işlemleri
transaction { }içinde çalışır — başarıda onaylanır, hatada geri alınır - Tabloları bir işlem içinde
SchemaUtils.create()ile oluşturun veya silin - Korutin bağlamlarında engelleyici Exposed çağrılarını
withContext(Dispatchers.IO)içine alın - Oluşturulan SQL'i incelemek için geliştirme sırasında
StdOutSqlLoggeretkinleştirin
Sıkça Sorulan Sorular
“Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i” dersi ücretsiz mi?
Evet — “Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i” dersinde ne öğreneceğim?
Bir veritabanına bağlanın, Exposed'i yapılandırın ve kodu işlemler içinde yürütün. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i
- Table DSL ile Tablolar Tanımlama
- Query DSL ile CRUD: insert, select, update, delete
- Exposed DAO: Varlık Sınıfları ve İlişkiler