içinde bu bağlantı ı yorumum önce belirtildiği, bu bölümü okuyun:
Bir "getirme" birleşimi, ilişkilendirmelerin veya değer koleksiyonlarının, tek bir seçim kullanılarak üst nesneleriyle birlikte başlatılmasına olanak tanır. Bu özellikle bir koleksiyon söz konusu olduğunda kullanışlıdır. İlişkilendirmeler ve koleksiyonlar için eşleme dosyasının dış birleştirme ve tembel bildirimlerini etkili bir şekilde geçersiz kılar .
varlık içindeki bir koleksiyon için (fetch = FetchType.LAZY) özelliğiniz varsa bu "FETCH JOIN" etkisi olacaktır (örnek feryat).
Ve sadece "sorgunun ne zaman gerçekleşmesi gerektiği" yöntemini etkiler. Ve ayrıca bilmelidir bu :
hazırda bekletme modunun iki dikey görüşü vardır: ilişkilendirme ne zaman getirilir ve nasıl getirilir. Onları karıştırmamanız önemlidir. Performansı ayarlamak için getirmeyi kullanırız. Belirli bir sınıfın herhangi bir müstakil örneğinde hangi verilerin her zaman kullanılabilir olduğuna ilişkin bir sözleşme tanımlamak için tembel kullanabiliriz.
ilişkilendirme ne zaman getirilir -> "FETCH" türünüz
nasıl getirilir -> Katıl / Seç / Alt Seç / Toplu
Sizin durumunuzda, FETCH sadece Çalışanın içinde bir set olarak bölümünüz varsa, bu varlıkta böyle bir şey varsa etkili olacaktır:
@OneToMany(fetch = FetchType.LAZY)
private Set<Department> department;
kullandığında
FROM Employee emp
JOIN FETCH emp.department dep
alacaksın emp
ve emp.dep
. Getirmeyi kullanmadığınız zaman hala alabilirsiniz emp.dep
ama hazırda bekletme bölüm kümesi almak için veritabanına başka bir seçim işleyecek.
bu yüzden sadece bir performans ayarlama meselesi, tek bir sorguda (istekli olsun ya da olmasın) tüm sonucu almak istediğiniz (istekli getirme) ya da ihtiyacınız olduğunda ikinci olarak sorgulamak istediğinizde (tembel getirme).
Tek bir seçimle (bir büyük sorgu) küçük veri almanız gerektiğinde istekli getirmeyi kullanın. Ya da ihtiyacınız olanı sorgulamak için tembel getirmeyi kullanın (çok daha küçük sorgu).
şu durumlarda getir:
almak istediğiniz o varlığın içinde büyük gereksiz koleksiyon / set yok
uygulama sunucusundan veritabanı sunucusuna çok uzak iletişim ve uzun zamana ihtiyacı var
Eğer (bu bilgilere erişimi olmadığı zamanlarda İkincisini bu koleksiyonu gerekebilir dışında bir işlem yöntemi / sınıfa)