Middle
Ləng yükləmə istifadə edilərkən JOIN FETCH əməliyyatı həyata keçiriləcəkmi?
sobes.tech Süni İntellekt
AI-dan cavab
JPA-da JOIN FETCH əməliyyatı əlaqəli varlıqları ehtiyatla yükləmək üçün istifadə olunur, yəni o, əlaqəli obyektləri əsas sorğu ilə birlikdə dərhal yükləyir. Təyinat və ya tənbəl yükləmə (FetchType.LAZY) konfiqurasiyası əlaqəli məlumatların yalnız tələb olunduqda yüklənməsini göstərir.
Əgər sorğuda JOIN FETCH istifadə olunursa, əlaqəli varlıqlar dərhal yüklənəcək, tənbəl yükləmə anotasiyasında nə göstərilsə də, fərq etməz. Başqa sözlə, JOIN FETCH yükləmə strategiyasını dəyişdirir və dərhal yükləməni məcbur edir.
Buna görə də, JOIN FETCH istifadə ediləndə, əməliyyat icra olunacaq və əlaqəli məlumatlar dərhal yüklənəcək, mapping-də təyin olunan tənbəl yükləmə nəzərə alınmadan.
Nümunə:
String jpql = "SELECT p FROM Parent p JOIN FETCH p.children WHERE p.id = :id";
Parent parent = entityManager.createQuery(jpql, Parent.class)
.setParameter("id", 1L)
.getSingleResult();
// Uşaqlar dərhal yüklənəcək, hətta Parent.children-də FetchType.LAZY təyin olunubsa da