Hibernate Dersleri‘ne devam ediyoruz.
Bu yazıda veritabanı ilişkilerinden çoka çok ilişkiyi inceleyeğiz. Çoka çok ilişkinin Hibernate ile olan yapısı için bir senaryo gerçekleştireceğiz. Bu senaryoda yazar ve kitaplar bulunmaktadır.
@Entity public class Yazar { private Long yazarId; private String yazarAdi; @Id @GeneratedValue(strategy=GenerationType.AUTO) public Long getYazarId() { return yazarId; } public void setYazarId(Long yazarId) { this.yazarId = yazarId; } @Column(name="yazar_adi") public String getYazarAdi() { return yazarAdi; } public void setYazarAdi(String yazarAdi) { this.yazarAdi = yazarAdi; } }
Yazar persist sınıfımızı oluşturduk. Bu sınfın çoka çok ilişkide olucağı kitap sınıfımızıda yazalım.
@Entity public class Kitap { private Long kitapId; private String kitapAdi; private Set<Yazar> yazarListesi; @Id @GeneratedValue(strategy=GenerationType.AUTO) public Long getKitapId() { return kitapId; } public void setKitapId(Long kitapId) { this.kitapId = kitapId; } @Column(name="kitap_adi") public String getKitapAdi() { return kitapAdi; } public void setKitapAdi(String kitapAdi) { this.kitapAdi = kitapAdi; } @ManyToMany(cascade=CascadeType.ALL) @JoinTable(name="yazar_kitap", joinColumns=@JoinColumn(name="kitap_id"), inverseJoinColumns=@JoinColumn(name="yazar_id")) public Set<Yazar> getYazarListesi() { return yazarListesi; } public void setYazarListesi(Set<Yazar> yazarListesi) { this.yazarListesi = yazarListesi; } }
Çoka çok ilişkiyi kitapların birden fazla yazarı olacağı gibi yazarlarından birden fazla kitabı olabilir bu @ManyToMany ilişkisinin persist sınfını bir liste olarak kitap sınıfında tanımlıyoruz. Bu yapı ile birlikte JoinTable yaparak diğer bir tabloda kitap_id ve yazar_id bilgilerinin tutulduğu yazar_kitap tablosunda tutulmaktadır.
Önceki : Bire Çok İlişki (One To Many) | Hibernate Dersleri | Sonraki: Cascade Yapısı |