Ответ 1
Скажем, у нас есть такие сущности:
@Entity
@Table
public class Parent {
@Id
private Long id;
@OneToMany(mappedBy="parent", fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
private List<Child> child;
//getter setters
}
@Entity
@Table
public class Child {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
private Parent parent;
//getter setter
}
В приведенном выше примере при получении объекта Parent
, спящий режим будет автоматически загружать все child
объекты с помощью объединения. С другой стороны, когда вы получаете child
, объект Parent
не будет выбран, если вы не назовете его экспликацией в вашем коде child.getParent()
.
FetchType (Lazy/Eager) указывает, хотим ли мы, чтобы объект загружался с нетерпением или ленивым при вызове кода.
FetchMode (Select/Join) указывает, хотим ли мы, чтобы наша правота была загружена с дополнительным выбором или в одном запросе с объединением или подзапросом.