在hibernate中使用抓取模式

在hibernate中使用抓取模式,hibernate,Hibernate,假设客户和电话之间存在一对多关系 class Customer{ @OneToMany(cascade = {CascadeType.ALL},mappedBy = "customer", fetch = FetchType.LAZY) @Fetch( FetchMode.SELECT) private List<Phone> phoneList; } class客户{ @OneToMany(cascade={CascadeType.ALL},mappedBy=“custome

假设客户和电话之间存在一对多关系

class Customer{

@OneToMany(cascade = {CascadeType.ALL},mappedBy = "customer", fetch = FetchType.LAZY)
@Fetch( FetchMode.SELECT)
private List<Phone> phoneList;

}
class客户{
@OneToMany(cascade={CascadeType.ALL},mappedBy=“customer”,fetch=FetchType.LAZY)
@Fetch(FetchMode.SELECT)
私人列表电话列表;
}
在上面的代码中,它们之间的区别是什么 fetch=FetchType.LAZY和FetchMode.SELECT

我读到它们都是相同的,也就是说,它们都懒散地加载基础集合

有人能告诉我什么时候使用哪一种吗?

获取类型(lazy/eager)指的是Hibernate何时获取关联,是提前获取实体(eager)还是等待代码请求关联(lazy)

Fetch模式(select/join)是指Hibernate获取关联的方式,即它是使用额外的select语句,还是使用join语句

有些组合没有意义,例如lazy+join。如果您使用延迟抓取,那么选择抓取模式是您唯一可以做的


如果您使用即时获取,那么您可以选择使用任意一种获取模式。

谢谢您的回答。因此,在即时获取的情况下,哪种获取模式更适合使用..选择还是加入?@anand:没有“更好”,但是如果加入对您有效,它通常会提供更好的性能。