Sobes.tech
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 белгиленсе да