Hibernate.initialize(list)vs setFetchMode

时间:2014-07-18 08:54:20

标签: java hibernate jpa orm fetch

我正在寻找关于Hibernate.initialize(list)setFetchMode之间差异的一些解释......

据我所知,他们有同样的目的:加载一个懒惰的集合。

还有其他什么吗?

我能想象的另一件事是,使用Criteria API中的de setFetchMode,您可以在收藏中添加一些Criterion

1 个答案:

答案 0 :(得分:2)

使用FetchMode将允许您在单个选择中获取所有数据(通过将根实体加入您也有兴趣获取的其他关联)。

Hibernate.initialize(list)将始终发出新的选择。

最多加入一对多关联是合适的,而多对一关联没有严格的提取限制。

如果您需要选择多个一对多关联,则需要进行其他选择。您可以使用:

我的建议是使用explicit fetching policies on a per-query basis并始终验证actual executed SQL queries.