Чем отличается поведение загрузки связанных сущностей при использовании Lazy и Eager в Hibernate?
Ответ от нейросети
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, книги загрузятся сразу вместе с автором.