17 Temmuz 2018 Salı

JPA ManyToMany İlişki

ManyToMany
Şu satırı dahil ederiz.
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
ManyToMany unidirectional veya bidirectional olabilir.  ManyToMany'de 3 tablo kullanılır. Person ve Address tablolarını birleştirmek için bir ara tablo yani JoinTable kullanılır. JoinTable'da iki tane Foreign Key alanı vardır.

Veri Yapısı
ArrayList, Set kullanılabilir. Alanın ilklendirilmiş olması gerekir.
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="USER_VEHICLE",
           joinColumns=@JoinColumn(name="USER_ID"),
           inverseJoinColumns=@JoinColumn(name="VEHICLE_ID"))
Collection<Vehicle> vehicle = new ArrayList<>();

Unidirectional many-to-many - Ara Tablo
Person -> Ara Tablo -> Address.

Sadece Person sınıfında ManyToMany anotasyonu belirtilir. Address sınıfında belirtilmez. Yine ara tablo kullanılır.

- Eğer Person'dan Address silinirse sadece ara tablo kaydı silinir. Address silinmez.
- Eğer Person silinirse hem Person hem de ara tablo kaydı silinir. Address silinmez.

Bidirectional many-to-many - Ara Tablo
ManyToMany İlişki - Bidrectional yazısına taşıdım.


Hiç yorum yok:

Yorum Gönder