Sobes.tech
Назад к вопросам
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;