19 Şubat 2019 Salı

JPA ManyToMany İlişki

Giriş
Açıklaması şöyle.
For this relationship type, the default data loading method is LAZY: every time you ask for A, the B will not be retrieved.
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ı
List, Set kullanılabilir. Set kullanılması öneriliyor. Açıklaması şöyle.
And, for performance perspective it's better to use Set rather than a List. Hibernate will fire less queries to update.

@JoinTable Yapısı
A ve B arasında ManyToMany ilişki olsun.

A sınıfına şöyle yazarız.

joinColumns = @JoinColumn içindeki name ara tablodaki sütun, referenced column name A nesnesinin tablonsundaki primary key

inverseJoincolumns= @JoinColumn içindeki name ara tablodaki sütun, referenced column name B nesnesinin tablosundaki primary key sütunlarıdır


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

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


Hiç yorum yok:

Yorum Gönder