N+1: загружаешь N Orders (1 запрос), для каждого обращаешься к order.getCustomer() (N запросов) = N+1 итого. Решения: JOIN FETCH в JPQL ("SELECT o FROM Order o JOIN FETCH o.customer") — один запрос с JOIN. @EntityGraph(@NamedAttributeNode("customer")) — декларативный fetch plan. @BatchSize(size=20) — Hibernate загружает по 20 за раз вместо по одному. @Fetch(FetchMode.SUBSELECT) — один subselect запрос для всей коллекции. Обнаружение: Hibernate Statistics или p6spy для логирования запросов.
Что такое N+1 проблема в Hibernate и как её решить?
Middle
390 просмотровAFK Offer AI
Что делает @SpringBootTest?