Вопрос проверяет понимание стратегий загрузки данных и их влияния на производительность.
Eager и lazy fetching определяют, когда загружаются связанные сущности.Eager загружает данные сразу вместе с основной сущностью.Lazy откладывает загрузку до первого обращения.Lazy используется по умолчанию для большинства связей.
Неправильный выбор может привести к проблемам производительности.
Fetching strategy — это правило, определяющее момент загрузки связанных данных.
EAGER fetchingПри EAGER:
связанные сущности загружаются сразу
выполняются дополнительные join или запросы
@OneToMany(fetch = FetchType.EAGER)
private List<Item> items;
Плюсы:
данные сразу доступны
Минусы:
лишние запросы
риск загрузки больших объёмов данных
LAZY fetchingПри LAZY:
данные загружаются по требованию
используется proxy-объект
@OneToMany(fetch = FetchType.LAZY)
private List<Item> items;
Плюсы:
лучшая производительность
контроль загрузки
Минусы:
возможны ошибки при неправильном управлении сессией
по умолчанию использовать LAZY
EAGER — только при явной необходимости
Стратегия загрузки напрямую влияет на производительность. Осознанный выбор lazy и eager — ключ к эффективной работе с JPA.