Назад к вопросам
Senior
6
Связи в Hibernate (OneToOne, OneToMany, ManyToOne, ManyToMany) — жадные или ленивые по умолчанию?
Компании, где спрашивали
SSP Soft
Ответ от нейросети
sobes.tech AI
В Hibernate по умолчанию поведение загрузки (fetch type) для связей следующее:
- @OneToOne — по умолчанию EAGER (жадная загрузка)
- @ManyToOne — по умолчанию EAGER
- @OneToMany — по умолчанию LAZY (ленивая загрузка)
- @ManyToMany — по умолчанию LAZY
Это означает, что при загрузке сущности Hibernate сразу подгружает связанные объекты для OneToOne и ManyToOne, а для коллекций (OneToMany, ManyToMany) — загружает их только при обращении к ним.
Если нужно изменить поведение, можно явно указать fetch = FetchType.LAZY или FetchType.EAGER в аннотации.
Пример:
@OneToMany(fetch = FetchType.EAGER)
private Set<Order> orders;