Middle
Կատարվելու է արդյոք JOIN FETCH գործողությունը երբ օգտագործվում է դանդաղ բեռնումը:
sobes.tech AI
Պատասխան AI-ից
JPA-ում JOIN FETCH գործառույթը օգտագործվում է կապված օբյեկտների անհապաղ բեռնելու համար, այսինքն՝ այն բեռնում է կապված օբյեկտները անմիջապես հիմնական հարցումի հետ։ Տեգավորումը կամ լենիվ բեռնումը (FetchType.LAZY) ցույց է տալիս, որ կապված տվյալները պետք է բեռնվեն միայն պահանջի դեպքում։
Եթե հարցումում օգտագործվում է JOIN FETCH, կապված օբյեկտները անմիջապես բեռնվում են, անկախ այն բանից, թե ինչ է նշված լենիվ բեռնումը։ Այլ կերպ ասած, JOIN FETCH փոխում է բեռնումի ռազմավարությունը և պարտադրում է անհապաղ բեռնում։
Այսպիսով, JOIN FETCH օգտագործելիս, գործողությունը կիրականացվի և կապված տվյալները անմիջապես բեռնվեն, չնայած մապինգում սահմանված լենիվ բեռնումին։
Օրինակ՝
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();
// Երեխաները անմիջապես բեռնվում են, նույնիսկ եթե Parent.children-ում սահմանված է FetchType.LAZY