Middle
Da li će se operacija JOIN FETCH izvršiti pri korišćenju lenjog učitavanja?
sobes.tech АИ
Одговор од АИ
Operacija JOIN FETCH u JPA se koristi za žurno učitavanje povezanih entiteta, tj. ona odmah učitava povezane objekte zajedno sa glavnim upitom. Anotacija ili konfiguracija za lenjo učitavanje (FetchType.LAZY) ukazuje da povezani podaci treba da se učitavaju samo na zahtev.
Ako se u upitu koristi JOIN FETCH, povezane entitete će biti učitane odmah, bez obzira na to šta je navedeno u anotaciji za lenjo učitavanje. Drugim rečima, JOIN FETCH prepisuje strategiju učitavanja i forsira žurno učitavanje.
Tako, pri korišćenju JOIN FETCH, operacija će biti izvršena i povezani podaci će biti učitani odmah, uprkos lenjom učitavanju definisanom u mapiranju.
Primer:
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();
// Deca će biti učitana odmah, čak i ako je u Parent.children postavljeno FetchType.LAZY