❓ Что такое проблема N+1 и как её решить?N+1 возникает при
ленивой загрузке связанных сущностей в ORM. Чтобы получить список из N объектов, выполняется 1 запрос на сам список плюс по 1 запросу на подгрузку связи у каждого объекта — итого N+1 запросов.Например, 100 заказов с ленивым клиентом →
1 запрос на заказы + 100 запросов на клиентов = 101 запрос вместо одного-двух. На больших объёмах это убивает производительность.Решения:—
JOIN FETCH или @EntityGraph, чтобы подтянуть связь одним запросом;—
batch fetching, для загрузки связей пачками;—
DTO-проекция одним запросом, без загрузки целых сущностей.🐸 Библиотека собеса по Java#sql