Что такое N+1 проблема в JPA?

Middle
424 просмотров
AFK Offer AI

N+1 — когда для загрузки N сущностей выполняется 1 запрос на родителей + N запросов на связанные коллекции. Пример: findAll() для 100 User, каждый имеет List с LAZY loading — 1 + 100 запросов. Решения: 1) JOIN FETCH в JPQL: @Query("SELECT u FROM User u JOIN FETCH u.orders"), 2) @EntityGraph(attributePaths = "orders"), 3) @BatchSize(size = 50) — загружает коллекции пачками, 4) DTO-проекции через native query. Hibernate.initialize() — ручная подгрузка.

Следующий вопрос

Что такое generics в Java и зачем они нужны?