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

Чем отличается поведение загрузки связанных сущностей при использовании Lazy и Eager в Hibernate?

Компании, где спрашивали
Surf

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

sobes.tech AI

В Hibernate поведение загрузки связанных сущностей определяется стратегиями Lazy (ленивая загрузка) и Eager (жадная загрузка).

  • Lazy Loading (ленивая загрузка): связанные сущности загружаются только при первом обращении к ним. При первоначальном запросе к базе данных загружается только основная сущность, а связанные данные подтягиваются позже, когда к ним обращаются. Это помогает экономить ресурсы и уменьшать объем данных, загружаемых сразу.

  • Eager Loading (жадная загрузка): связанные сущности загружаются сразу вместе с основной сущностью в одном запросе (или с помощью join). Это удобно, когда связанные данные точно понадобятся, чтобы избежать дополнительного количества запросов.

Пример:

@Entity
class Author {
    @OneToMany(fetch = FetchType.LAZY) // или FetchType.EAGER
    private Set<Book> books;
}

Если указать FetchType.LAZY, книги автора загрузятся только при обращении к author.getBooks(). Если FetchType.EAGER, книги загрузятся сразу вместе с автором.