Sobes.tech
Назад к вопросам
Junior — Middle
93

Какой механизм загрузки данных применяется при использовании JOIN FETCH в ORM?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

JOIN FETCH в ORM (например, в JPA/Hibernate) используется для жадной загрузки связанных сущностей в одном запросе.

Механизм:

  • При выполнении запроса с JOIN FETCH ORM выполняет SQL-запрос с JOIN, который сразу загружает основную сущность и связанные с ней объекты.
  • Это предотвращает проблему "N+1 запросов", когда для каждой связанной сущности выполняется отдельный запрос.
  • Загруженные связанные объекты сразу доступны в памяти, без дополнительного обращения к базе.

Пример:

String jpql = "SELECT o FROM Order o JOIN FETCH o.items WHERE o.id = :id";
Order order = entityManager.createQuery(jpql, Order.class)
    .setParameter("id", orderId)
    .getSingleResult();

Здесь items будут загружены вместе с Order одним запросом.

Таким образом, JOIN FETCH реализует жадную загрузку (eager loading) связанных данных через объединение таблиц в одном запросе.