gpt4 book ai didi

hibernate - FetchMode 和 FetchType 的区别

转载 作者:行者123 更新时间:2023-12-03 10:10:33 26 4
gpt4 key购买 nike

指定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) 告诉我们是希望我们的实体加载额外的选择还是在一个查询中加载连接或子选择。

关于hibernate - FetchMode 和 FetchType 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25821718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com