Какая разница при указании lazy = "true"
и с использованием fetch = "select" or "join"
? какой из них предпочтительнее другого?Разница между FetchMode и FetchType
рассматривает Джаендра
Какая разница при указании lazy = "true"
и с использованием fetch = "select" or "join"
? какой из них предпочтительнее другого?Разница между FetchMode и FetchType
рассматривает Джаендра
Допустим, у нас есть объекты, как это:
@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) указывает, хотим ли мы, чтобы наша правота была загружена с дополнительным выбором или в одном запросе с объединением или подзапросом.
FetchMode: Он определяет how
спящий режим (с помощью которых стратегии, например, соединения, подзапрос и т.д.) будет извлекать данные из базы данных.
FetchType: Он определяет whether
спящий режим будет получать данные или нет.
ПРИМЕЧАНИЕ: FetchMode
применимо только при FetchType = EAGER
в аннотации.
FetchMode применим не только к FetchType.EAGER. Правила следующие: а) если вы не указали FetchMode, по умолчанию JOIN и FetchType работают нормально, b) если вы явно укажете FetchMode.JOIN, FetchType игнорируется и запрос всегда нетерпелив, c) если вы укажете FetchMode.SELECT или FetchMode.SUBSELECT, FetchType.Type работает нормально. –
@ DawidStępień эта информация очень полезна! – GMsoF
Обнаружили это онлайн. Очень полезно. http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/ – Jake