gpt4 book ai didi

java - Hibernate:是否有可能找出实际使用了哪些急切加载的集合?

转载 作者:搜寻专家 更新时间:2023-11-01 03:36:42 26 4
gpt4 key购买 nike

我怀疑我们的一个应用程序中的某些性能问题是由于 hibernate 对某些关联的过度预加载造成的,这可能会通过切换到延迟加载来解决。不幸的是,很难跟踪这些关联的实际使用方式和时间——更不用说它们“平均”使用的频率了。是否有一些工具( hibernate 日志记录选项?)可以帮助决定哪些急切加载的关联应该更好地延迟加载和/或切换到其他 fetching strategies

例如,我可以想象一个工具可以记录每个 hibernate session 的日志,每个类加载了多少个对象,应用程序实际访问了多少对象,甚至可以生成一些相关统计信息。当然,最后只有负载测试才能决定哪个更好,但这可能会给您一些尝试的想法。或者也许还有更好的工具。

最佳答案

Hibernate 不支持任何 LAZY 初始化统计,因为它只提供了一个框架,但最终,应用程序开发人员有责任决定如何使用它来满足他的项目需求。

EAGER fetching is a code smell .大多数情况下,它是为了简单起见而使用的,而不考虑长期的性能损失。获取策略永远不应该是实体映射的责任。

每个业务用例都有不同的实体加载要求,因此应将抓取策略委托(delegate)给每个单独的查询。

您可以获得的最佳统计数据就是简单地 log all SQL statements并决定是否需要执行查询来满足每个特定的请求要求。

我的建议是支持 LAZY 关联,并在需要加载一些 LAZY 关联时使用基于查询的提取指令。

关于java - Hibernate:是否有可能找出实际使用了哪些急切加载的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576279/

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