FetchMode和FetchType之间的区别
指定lazy = "true"
和使用有fetch = "select" or "join"
什么区别 ?哪一个比另一个更好?
问候贾恩德拉
回答:
假设我们有这样的实体:
@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
实体时,hibernate将自动child
使用join急切地加载所有实体。另一方面,当您提取时Child
,Parent
除非您在代码中显式调用实体,否则不会选择实体child.getParent()
。
FetchType(Lazy / Eager)告诉我们,当代码中有调用时,我们是希望实体加载还是延迟加载。
FetchMode(Select / Join)告诉我们是要向我们的实体加载其他选择还是在一个查询中使用join或subselect加载。
以上是 FetchMode和FetchType之间的区别 的全部内容, 来源链接: utcz.com/qa/416456.html