在休眠中使用提取模式

Ana*_*and 6 hibernate

假设我们在客户和电话之间有一对多的关系.

class Customer{

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

}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,fetch = FetchType.LAZY和FetchMode.SELECT之间有什么区别.

我读到它们都是相同的,即它们都懒洋洋地加载了底层集合.

有人可以解释一下我什么时候使用?

ska*_*man 13

提取类型(懒惰/渴望)是指 Hibernate将提前当它提取的实体(渴望)提取的关联,是否,或者是否它等待的代码询问的关联(懒惰).

获取模式(select/join)是指Hibernate 如何获取关联,即它是使用额外的SELECT语句,还是使用连接.

这些的一些组合没有意义,例如懒惰+加入.如果使用延迟提取,那么SELECT提取模式是您唯一可以执行的操作.

如果使用eager fetch,则可以选择使用fetch模式.