Что такое 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.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться