Odak modu
Bu yazıda tablo ilişkilerinden ve özellikle de many-to-many ilişkilerinden bahsedeceğiz. Many-to-many ilişkisi, bir tablonun diğer tabloya ait birden fazla öğe içerebilir. Bu öğeler de birden fazla ürüne ait olabilir. Bu tür verileri tutmak için genellikle bir aracı tabloya ihtiyaç duyulur.
İlk önce, örneğimize başlamadan önce Colors tablomuzu oluşturmamız gerekiyor. Colors tablosu için bir ID, bir adet Color adı ve bir boolean değer içeren bir private string alanına ihtiyacımız var. Bu tablonun ilişkili olduğu ürünleri tutmak için bir liste oluşturacağız ve bu listeye ColorList diyeceğiz.
@Entity
public class Colors {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String colorName;
@OneToMany(mappedBy = "colors")
private List<ProductColors> colorList;
}
Bu tablonun ardından many-to-many ilişkisini tanımlamak için ProductColors adında bir ara tabloya ihtiyacımız var. Bu tablo, Product ve Colors tabloları arasındaki ilişkiyi temsil eder.
@Entity
@Table(name = "ProductColors")
public class ProductColors {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "product_id")
private Product product;
@ManyToOne
@JoinColumn(name = "color_id")
private Colors colors;
}
Sonrasında, ilişkiyi tanımlamak için Product sınıfına many-to-many ilişkisi eklenir.
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany
@JoinTable(
name = "ProductColors",
joinColumns = @JoinColumn(name = "product_id"),
inverseJoinColumns = @JoinColumn(name = "color_id"))
private List<Colors> colorList;
}
Burada, @JoinTable anotasyonu kullanılarak ara tablo belirtilir ve hangi sütunların hangi anahtarlarla eşleştiği belirlenir.
Bu şekilde, many-to-many ilişkilerini yönetebilir ve veritabanında gerekli tabloları otomatik oluşturabilirsiniz. İlişkileri test etmek için gerekli verileri ekleyip, sorguları çalıştırabilirsiniz. Bu yöntemle, tablo ilişkilerini güncel tutabilir ve veritabanında tuttuğunuz verilere daha etkili bir şekilde erişebilirsiniz.
Sektörde en çok aranan yazılım becerilerini kazan
Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.
Yunus Emre Kabakcı
Patika+ mezunuPatika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,
3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!
“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“
Yorum yapabilmek için derse kayıt olmalısın!