如果我在一个惰性集合上调用size(),Hibernate会获取它吗?

时间:2016-02-06 14:59:06

标签: java performance hibernate collections

当我们使用Hibernate的一对多关系映射(例如一个房子,许多窗口)并调用像house.getWindows().size()这样的方法时,Hibernate会非常聪明地调用select count吗?或者,它会从window表中获取映射到house表中的行的所有行?

通过迭代计算子项可能效率非常低,因为很多关于窗口的数据都可以在没有任何需要的情况下获取。 size()同样糟糕吗?如果在某处配置了结果集限制,那么size()会工作吗?

1 个答案:

答案 0 :(得分:2)

通常会在调用size()的情况下初始化集合,但可以使用其他注释更改此集合。

如果要执行SELECT COUNT查询,则需要指定一些其他注释或XML属性。

有关详细信息,请参阅this SO讨论。