Hibernate / JPA trainee
Что такое N+1?
Ответ
Загрузил список из N сущностей одним запросом. Потом в цикле обращаешься к их LAZY-связям — на каждую идёт отдельный SELECT. Итого 1 + N запросов. На 100 сущностях это 101 запрос — катастрофа для производительности.
Разбор: N+1 — это 1 запрос на список плюс по одному SELECT на LAZY-связь каждой из N сущностей, итого 1+N. Лечится через JOIN FETCH, @EntityGraph или batch-fetching, а не глобальным EAGER (он плодит свои проблемы). Дубли строк от JOIN — это другая проблема (нужен DISTINCT), а не N+1.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.