Карточка Middle Hibernate: N+1, lazy, кеш спрашивают часто обновлено

Способы победить N+1

Вопрос

Как исправить N+1 в Spring Data JPA?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

join fetch в @Query, @EntityGraph(attributePaths = ...) на методе репозитория, @BatchSize или hibernate.defaultbatchfetchsize, DTO-проекция с нужными полями. Найти проблему помогают логи SQL, статистика Hibernate и тесты с подсчётом запросов.

Ответ

join fetch в @Query, @EntityGraph(attributePaths = ...) на методе репозитория, @BatchSize или hibernate.default_batch_fetch_size, DTO-проекция с нужными полями. Найти проблему помогают логи SQL, статистика Hibernate и тесты с подсчётом запросов.

Разбор

join fetch в @Query, @EntityGraph(attributePaths = ...) на методе репозитория, @BatchSize или hibernate.default_batch_fetch_size, DTO-проекция с нужными полями. Найти проблему помогают логи SQL, статистика Hibernate и тесты с подсчётом запросов.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.