Hibernate Dersleri – Çoka Çok İlişki (Many To Many Annotation)
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ı |
No Comment! Be the first one.