gpt4 book ai didi

hibernate - 如何在运行时覆盖 hibernate 获取策略

转载 作者:行者123 更新时间:2023-12-03 11:51:17 25 4
gpt4 key购买 nike

我在《行动中的休眠》一书中看到以下陈述。任何人都可以告诉我如何在运行时覆盖策略。并且您可以采取相反的方式,即我将抓取策略设置为false且我想将其设置为true吗?

“延迟获取让您决定在第一个对象图中加载了多少对象图
数据库匹配以及仅在首次关联时应加载的关联
访问。延迟获取是对象持久性和
达到可接受的性能的第一步。
我们建议首先将所有关联配置为惰性(或者也许
批量懒惰)获取映射文件中的内容。 然后可以覆盖此策略
在运行时通过强制执行渴望获取的查询执行
。”

最佳答案

如果您使用HQL进行查询,则可以使用“fetch”关键字指定急切的抓取方式,如下所示:

from Cat as cat
inner join fetch cat.mate
left join fetch cat.kittens child
left join fetch child.kittens

如果您使用的是Criteria Query API,则可以使用setFetchMode指定获取方式
List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.setFetchMode("mate", FetchMode.EAGER)
.setFetchMode("kittens", FetchMode.EAGER)
.list();

关于hibernate - 如何在运行时覆盖 hibernate 获取策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5435304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com