Table DSL ile Tablolar Tanımlama
Sütunlar, birincil anahtarlar ve yabancı anahtarlarla türlendirilmiş tablo şemaları tanımlayın.
Table DSL ile Tablolar Tanımlama, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 2. 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 Tablo Nesneleri
Exposed'da veritabanı tabloları, Table (Sorgu DSL'si) veya IntIdTable/LongIdTable/UUIDTable (DAO katmanı) sınıflarını genişleten Kotlin tekil object nesneleriyle temsil edilir. Sütun tanımları Kotlin özellikleridir.
Temel Bir Tablo Tanımı
Table sınıfını genişletin ve yerleşik sütun oluşturma işlevlerini kullanarak sütunları tanımlayın:
import org.jetbrains.exposed.sql.Table
object Users : Table("users") {
val id = long("id").autoIncrement()
val name = varchar("name", 100)
val email = varchar("email", 255).uniqueIndex()
val age = integer("age").nullable()
override val primaryKey = PrimaryKey(id)
}Sütun Türleri
Exposed, yaygın SQL türleri için oluşturma işlevleri sunar:
integer("col"),long("col"),short("col")varchar("col", length),text("col")bool("col"),double("col"),decimal("col", precision, scale)datetime("col"),date("col"),timestamp("col")blob("col"),uuid("col"),binary("col", length)
Boş Değere İzin Veren Sütunlar
NULL değerlerine izin vermek için herhangi bir sütunda .nullable() çağırın. Kotlin türü boş değer kabul edebilir hâle gelir (String yerine String?):
object Products : Table("products") {
val id = long("id").autoIncrement()
val name = varchar("name", 200)
val description = text("description").nullable()
override val primaryKey = PrimaryKey(id)
}Varsayılan Değerler
Kotlin tarafında bir varsayılan değer (ekleme işleminden önce uygulanır) için .default(value), veritabanı tarafında bir SQL varsayılanı için .defaultExpression(expr) kullanın:
object Orders : Table("orders") {
val id = long("id").autoIncrement()
val status = varchar("status", 20).default("PENDING")
val createdAt = datetime("created_at")
.defaultExpression(CurrentDateTime)
override val primaryKey = PrimaryKey(id)
}Dizinler ve Benzersizlik Kısıtlamaları
Bir sütun üzerinde doğrudan normal dizin için .index(), benzersiz dizin için .uniqueIndex() çağırın. Bileşik dizinler için Table üzerinde index() işlevini kullanın:
object Articles : Table("articles") {
val id = long("id").autoIncrement()
val title = varchar("title", 300).index()
val slug = varchar("slug", 300).uniqueIndex()
override val primaryKey = PrimaryKey(id)
}Yabancı Anahtarlar
Sütunlar arasında bir yabancı anahtar kısıtlaması tanımlamak için .references() kullanın. Başvurulan sütunu, isteğe bağlı olarak da onDelete ve onUpdate eylemlerini aktarın:
object Posts : Table("posts") {
val id = long("id").autoIncrement()
val authorId = long("author_id").references(Users.id, onDelete = ReferenceOption.CASCADE)
val title = varchar("title", 300)
override val primaryKey = PrimaryKey(id)
}IdTable Çeşitleri
DAO katmanı için düz Table yerine türü belirli kimlik tablolarını kullanın:
IntIdTable("name")—idadlıIntotomatik artan birincil anahtarLongIdTable("name")—Longotomatik artan birincil anahtarUUIDTable("name")— UUID birincil anahtarı
object Users : LongIdTable("users") {
val name = varchar("name", 100)
val email = varchar("email", 255).uniqueIndex()
}Bileşik Birincil Anahtarlar
PrimaryKey() işlevine birden çok sütun aktararak bileşik birincil anahtar tanımlayın:
object UserRoles : Table("user_roles") {
val userId = long("user_id").references(Users.id)
val roleId = long("role_id").references(Roles.id)
override val primaryKey = PrimaryKey(userId, roleId)
}Enum Sütunları
Kotlin enum değerlerini enumerationByName() veya enumeration() kullanarak dizeler ya da sıra numaraları olarak saklayın:
enum class Status { ACTIVE, INACTIVE, BANNED }
object Users : LongIdTable("users") {
val name = varchar("name", 100)
val status = enumerationByName<Status>("status", 20)
}Şema Değişikliklerini Uygulama
Mevcut verileri silmeden eksik tabloları ve sütunları eklemek için SchemaUtils.createMissingTablesAndColumns() çağırın — bu, geliştirme için güvenli bir geçiş işlemidir. Üretim ortamında Flyway veya Liquibase gibi bir geçiş aracı kullanın.
transaction {
SchemaUtils.createMissingTablesAndColumns(Users, Posts, Orders)
}Hızlı Kontrol
Exposed'ın Table DSL'sinde Posts.authorId ile Users.id arasında yabancı anahtarı nasıl tanımlarsınız?
Özet: Table DSL'si ile Tabloları Tanımlama
Önemli noktalar:
- Tablolar,
Table,LongIdTablevb. sınıfları genişletenobjectnesneleridir - Sütunlar:
varchar,integer,long,bool,datetime,uuidvb. .nullable(),.default(),.uniqueIndex(),.references()sütunları değiştirir- Bileşik birincil anahtarlar:
PrimaryKey(col1, col2) - Şemayı
SchemaUtils.create()veyacreateMissingTablesAndColumns()ile uygulayın
Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 51
- Dersler
- 203
Sıkça Sorulan Sorular
“Table DSL ile Tablolar Tanımlama” dersi ücretsiz mi?
Evet — “Table DSL ile Tablolar Tanımlama” 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.
“Table DSL ile Tablolar Tanımlama” dersinde ne öğreneceğim?
Sütunlar, birincil anahtarlar ve yabancı anahtarlarla türlendirilmiş tablo şemaları tanımlayı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 2. dersidir.
“Table DSL ile Tablolar Tanımlama” 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