Операсияи JOIN FETCH дар вақти истифодаи боркунии суст иҷро мешавад?
sobes.tech AI
Ҷавоб аз AI
Ҳаракат JOIN FETCH дар JPA барои боркунии зуд-зуди объектҳои алоқаманд истифода мешавад, яъне он объектҳои алоқамандро фавран бо саволи асосӣ бор мекунад. Анотация ё танзимоти боркунии бехабар (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` муайян карда шуда бошад