Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: fetch, lazy, eager

Что такое eager и lazy fetching?

Вопрос проверяет понимание стратегий загрузки данных и их влияния на производительность.

Короткий ответ

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.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#fetch

#lazy

#eager

Подпишись на Java Developer в телеграм