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ı |
Leave a Reply