Найти в Дзене
Software development

Проблема с N+1 запросами в JPA и Hibernate

Проблема N + 1 возникает, когда фреймворк доступа к данным выполняет N дополнительных SQL-запросов для получения тех же данных, которые можно получить при выполнении одного SQL-запроса. Подробнее о каждом варианте будет чуть позже, ссылки приложу.
Оглавление

Что такое проблема N + 1

Проблема N + 1 возникает, когда фреймворк доступа к данным выполняет N дополнительных SQL-запросов для получения тех же данных, которые можно получить при выполнении одного SQL-запроса.

Решение проблемы N+1 в Hibernate

  • join fetch - надо писать запрос
  • @BatchSize - пакетная выборка - это оптимизация стратегии ленивой выборки
  • @EntityGraph - добавленный в JPA 2.1, позволяет вам определять, какие отношения или связанные сущности следует загружать для ваших конкретных вариантов использования

Подробнее о каждом варианте будет чуть позже, ссылки приложу.