【问题标题】:If I call size() on a lazy collection, will Hibernate fetch it? [duplicate]如果我在惰性集合上调用 size(),Hibernate 会获取它吗? [复制]
【发布时间】:2016-02-06 14:59:06
【问题描述】:

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

通过迭代计算子节点的效率可能非常低,因为会在没有任何需要的情况下获取大量有关窗口的数据。 size() 同样糟糕吗?如果在某处配置了结果集限制,size() 会起作用吗?

【问题讨论】:

    标签: java performance hibernate collections


    【解决方案1】:

    如果调用size(),通常会初始化集合,但这可以通过附加注释进行更改。

    如果您希望执行SELECT COUNT 查询,则需要指定一些额外的注释或 XML 属性。

    详情请参阅thisSO 讨论。

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 2018-05-13
      • 2018-10-25
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 2017-11-25
      • 2013-11-24
      • 2013-02-15
      相关资源
      最近更新 更多