Сначала подтвердите N+1 по SQL-логам/профилю, затем загружайте связанные данные пачкой: fetch join, entity graph, batch fetching или отдельный IN-запрос.
Как бороться с проблемой N+1?
Сначала подтвердите N+1 по SQL-логам/профилю, затем загружайте связанные данные пачкой: fetch join, entity graph, batch fetching или отдельный IN-запрос.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала подтвердите N+1 по SQL-логам/профилю, затем загружайте связанные данные пачкой: fetch join, entity graph, batch fetching или отдельный IN-запрос.
Типичный симптом — один запрос списка и ещё запрос на каждый элемент при обращении к relation. Выбор решения зависит от размера коллекций и нужных полей. Fetch join нескольких to-many связей может раздуть декартово произведение и сломать ожидания пагинации; DTO-проекция или двухэтапная загрузка часто безопаснее. Не включайте eager loading повсеместно. Добавьте проверку числа запросов и объёма данных на реальном размере страницы.