gpt4 book ai didi

java - 了解 Hibernate hibernate.max_fetch_depth 和 hibernate.default_batch_fetch_size

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:30 26 4
gpt4 key购买 nike

Hibernate documenation给出了一些 Hibernate 配置属性。其中,

hibernate.max_fetch_depth

Sets a maximum "depth" for the outer join fetch tree for single-ended associations (one-to-one, many-to-one). A 0 disables default outer join fetching. e.g. recommended values between 0 and 3

hibernate.default_batch_fetch_size

Sets a default size for Hibernate batch fetching of associations. e.g. recommended values 4, 8, 16

我是 Hibernate 的新手,有人可以通过示例帮助我理解这一点吗。

提前致谢。

最佳答案

max_fetch_depth:想象一个人和一个地址实体。每个人都住在一个地址(非常简单的系统),但很多人可能住在同一个地址。在对象模型中,一个人可能有一个地址属性。这将被映射为多对一(如文档所述)。现在,当从数据库中获取一个 Person 时,hibernate 会遇到这个属性。在数据库中,它是一个带有指向 Address 表的外键的列。要获取关联的对象,可以使用与该表的连接。生成的数据将用于填充将在人员的地址属性上设置的地址对象。从这个意义上讲,Hibernate 在获取对象时会遍历对象图。现在如果 Address 有一个属性 City 怎么办?这也将是多对一的,并且会通过相同的逻辑导致连接。如果 City 有一个属性(property) Country 会怎么样?一样。进行多次连接对性能不利。在某些时候,最好进行单独的选择,从缓存中获取数据或注入(inject)代理。此配置属性决定了 hibernate 在获取数据时将通过 join 遍历多少个关联。

默认_batch_fetch_size:这是一个非常低级别的属性,用于确定 Hibernate 在查询集合关联时将请求 JDBC 驱动程序获取/加载的行数。如果您要查询一个国家/地区的所有城市(前面的示例),那么通过 JDBC 连接批量加载数据,将数据作为对象传送到内存中的过程将更加简化。与查询执行我们的应用程序处理数据所需的环相比,它通常是微不足道的。将配置属性保留为默认值通常是正确的。

关于java - 了解 Hibernate hibernate.max_fetch_depth 和 hibernate.default_batch_fetch_size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25146492/

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