Hibernate / JPA middle
N+1 — детально?
Ответ
1 findAll() + N доп. запросов на lazy-коллекции при обращении к ним: 1000 заказов → 1001 SQL. Обнаружение: hibernate.generate_statistics=true, datasource-proxy. Решения: JOIN FETCH, @EntityGraph, @BatchSize(100), @Fetch(FetchMode.SUBSELECT).
Разбор: Классический N+1: один запрос на коллекцию-родитель (findAll) плюс по одному запросу на каждую lazy-связь при обращении к ней — для 1000 заказов выходит 1001 SQL. Дистракторы путают причину и счёт: проблему провоцирует именно LAZY при итерации (а не EAGER), запросов 1+N, а решают её JOIN FETCH/@EntityGraph/@BatchSize, а не fetch-size драйвера или second-level cache.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.