Hibernate / JPA middle
Что такое N+1 проблема в Spring Data JPA?
Ответ
При fetch = LAZY на связи, при итерации по списку делается +1 запрос за каждую связанную сущность. Решения: JOIN FETCH, @EntityGraph, BatchSize.
Разбор: В Spring Data JPA N+1 проявляется при LAZY-связи: при проходе по списку для каждой сущности уходит +1 запрос за связанными данными, а решают это JOIN FETCH, @EntityGraph или @BatchSize. Дистракторы путают LAZY с EAGER (именно LAZY провоцирует проблему), приписывают её Pageable/Slice и подменяют механизм кэшированием — кэш первого уровня работает в пределах одной сессии и сам по себе N+1 не убирает.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.