使用批量提取进行预先加载

时间:2014-03-12 08:01:38

标签: hibernate jpa eager-loading batch-fetching

是否有可能将Hibernate实施的JPA强制转换为使用批量提取进行预先加载?

你可能想知道我为什么要做这么奇怪的事情,所以让我解释一下。

我们有两个实体ABAB之间存在多对一的关系。

我想通过搜索加载A个实体,我希望在从存储库返回之前将它们完全加载。

但是由于A有很多BB,所以(相关的)B都会在二级缓存。因此,我希望每次都不要从数据库中获取所有{{1}}。

1 个答案:

答案 0 :(得分:0)

正如我理解您的问题,解决方案是在NamedQuery中使用带有FETCH指令的NamedQuery:

SELECT DISTINCT B LEFT JOIN FETCH B.a A//will return fully loaded B instances

如果要指定批量大小,可以在休眠(而不是JPA)中使用@BatchSize。请查看this link以获取示例。