Sobes.tech
Назад к вопросам
Junior — Middle
87

Что такое отложенная загрузка в JPA и какие её преимущества и недостатки?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Отложенная загрузка (Lazy Loading) в JPA — это механизм, при котором связанные сущности или коллекции не загружаются из базы данных сразу при загрузке основной сущности, а только при первом обращении к ним в коде.

Преимущества:

  • Экономия ресурсов и времени при загрузке, если связанные данные не всегда нужны.
  • Снижение объёма передаваемых данных и нагрузки на базу.

Недостатки:

  • Возможность возникновения ошибки LazyInitializationException, если доступ к отложенно загруженным данным происходит вне контекста сессии EntityManager.
  • Потенциальное увеличение количества SQL-запросов (проблема N+1).

Пример настройки отложенной загрузки для связи @OneToMany:

@Entity
public class Author {
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "author")
    private List<Book> books;
}

Здесь список книг автора загрузится только при обращении к author.getBooks().