Какие знаешь способы решения низкой производительности у Lazy загрузки JPA
-
Batch Fetching – загрузка связанных сущностей пачками через
@BatchSize. Уменьшает количество SQL-запросов.java@Entity @BatchSize(size = 20) public class Author { ... } -
Fetch Joins – использование
JOIN FETCHв JPQL/HQL для загрузки связанных данных одним запросом.java@Query("SELECT a FROM Author a JOIN FETCH a.books WHERE a.id = :id") Author findByIdWithBooks(@Param("id") Long id);
-
Entity Graphs – динамическое или статическое определение графа загрузки через
@NamedEntityGraph.java@NamedEntityGraph(name = "Author.books", attributeNodes = @NamedAttributeNode("books")) @Entity public class Author { ... } -
DTO Projection – выборка только нужных полей через конструкторы DTO или интерфейсы Spring Data.
-
Включение второго уровня кэша (Hibernate, EclipseLink) для часто читаемых данных.
-
Оптимизация
FetchType– заменаLAZYнаEAGERдля критически важных связей (осторожно – может привести к N+1). -
Использование
@Fetch(FetchMode.SUBSELECT)для загрузки коллекций одним подзапросом. -
Ручная инициализация через Hibernate.initialize() для контролируемой загрузки.
-
Проверка N+1 проблем через логирование SQL и профилирование.
-
Критичные участки – нативный SQL для сложных выборок.

офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру