栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

休眠计数集合大小,无需初始化

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

休眠计数集合大小,无需初始化

除查询外,可能的解决方案可能是

children
使用
lazy="extra"
(使用XML表示法)映射。这样,您可以使用所需的任何查询来获取Parent,然后在
parent.getChildren().size()
不加载整个集合的情况下进行调用(仅
SELECTCOUNT
执行类型查询)。

有了注释,它将是

@OneToMany@org.hibernate.annotations.LazyCollection(org.hibernate.annotations.LazyCollectionOption.EXTRA)private Set<Child> children = new HashSet<Child>();

更新: 引用Java
Persistence与Hibernate的相关内容
,第ch。13.1.3:

如果您调用不是标识符getter方法的任何方法,就会初始化一个代理,如果您开始遍历它的元素或调用任何一个集合管理操作(例如

size()
和),则会初始化一个集合
contains()
。Hibernate提供了一个额外的设置,该设置对于大型集合最有用。它们可以映射为
额外的懒惰 。[…]

[如上所述,]如果您调用,或

size()
,则不再初始化集合。-查询数据库以检索必要的信息。如果它是一个或一,操作
和也直接查询数据库。
contains()``isEmpty()``Map``List``containsKey()``get()

因此,使用如上所述映射的实体,您可以

Parent p = // execute query to load desired parent// due to lazy loading, at this point p.children is a proxy objectint count = p.getChildren().size(); // the collection is not loaded, only its size


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号