gpt4 book ai didi

java - 理解 Hibernate 中的@BatchSize

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:08:29 25 4
gpt4 key购买 nike

Hibernate documentation在@BatchSize 中提供了一些信息:

@BatchSize specifies a "batch size" for fetching instances of this class by identifier. Not yet loaded instances are loaded batch-size at a time (default 1).

我不清楚这个注释的目的是什么,我们什么时候需要使用它。能否请一些人帮助我理解何时使用此注释。

最佳答案

使用批量获取,如果访问一个代理,Hibernate 可以加载多个未初始化的代理。批量抓取是对 lazy select 抓取策略的一种优化。您可以通过两种方式配置批量提取:在类级别和集合级别。

类/实体的批量获取更容易理解。考虑以下示例:在运行时,您在 session 中加载了 25 个 Cat 实例,每个 Cat 都有对其所有者 Person 的引用。 Person 类使用代理 lazy="true"进行映射。如果您现在遍历所有猫并在每只猫上调用 getOwner(),Hibernate 将默认执行 25 条 SELECT 语句来检索代理所有者。您可以通过在 Person 的映射中指定批量大小来调整此行为:

<class name="Person" batch-size="10">...</class>

Hibernate 现在将只执行三个查询:模式是 10、10、5。

关于java - 理解 Hibernate 中的@BatchSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210949/

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