Назад к вопросам
СБЕР
Junior — Middle
93
Какой механизм загрузки данных применяется при использовании JOIN FETCH в ORM?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
JOIN FETCH в ORM (например, в JPA/Hibernate) используется для жадной загрузки связанных сущностей в одном запросе.
Механизм:
- При выполнении запроса с
JOIN FETCHORM выполняет 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) связанных данных через объединение таблиц в одном запросе.