Junior — Middle
Room kullanan bir veritabanında iki tablo arasında nasıl bağlantı kurulur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Room'da, iki tablo arasındaki ilişki, dış anahtarlar ve anotasyonlar ile ayrıca verileri birleştirmek için özel sınıflar kullanılarak kurulur.
-
Dış Anahtar (Foreign Key) — varlıkta (Entity),
@ForeignKeyanotasyonu ile başka bir tablonun birincil anahtarına referans veren bir alan gösterirsiniz. -
İlişkiler — ilişkili verileri almak için,
@Relationanotasyonlarıyla POJO sınıfları oluşturulur ve bu sınıflar ilişkili tablolardan iç içe nesneler almanıza olanak tanır.
"Birden çoğa" ilişkisi örneği:
@Entity
data class User(
@PrimaryKey val userId: Int,
val name: String
)
@Entity(
foreignKeys = [ForeignKey(
entity = User::class,
parentColumns = ["userId"],
childColumns = ["userOwnerId"],
onDelete = ForeignKey.CASCADE
)]
)
data class Book(
@PrimaryKey val bookId: Int,
val title: String,
val userOwnerId: Int // dış anahtar
)
// Kullanıcı ve onun kitaplarını almak için sınıf
data class UserWithBooks(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val books: List<Book>
)
Bu şekilde, Room tabloları otomatik olarak bağlar ve DAO aracılığıyla ilişkili verileri almanıza olanak tanır.