java - 如何捕获hibernate延迟加载?

标签 java hibernate

我想优化一个加载了很多对象的页面,其中许多对象使用 hibernate 的延迟加载来获取其属性。但很难手动找到所有这些,因为当我看到 someItem.getSmth() 时,我不知道它实际上是延迟加载的(这不是我的代码),而且我无论如何都可以跳过其中一些加载,因此我需要一些自动方式来查找它。我尝试打开 hibernate 的 SQL 日志记录,但无法读取它,因为它每次加载页面会写入大约 50 兆的日志,并且它不会告诉我查询是从哪里调用的。是否有可能以某种方式知道哪些对象是延迟加载的以及从哪里加载的?

最佳答案

Is it possible to know somehow which objects are lazy loaded and from where?

您可以解析实体 bean 的注释 OneToOneOneToManyManyToOneManyToMany,如果找到,请检查属性 fetch 是否具有值 FetchType.LAZY

这可以让您知道哪些对象是延迟加载的以及来自哪些类,但不知道调用的方法。

关于java - 如何捕获hibernate延迟加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754305/

相关文章:

java - 检查文件是否是系统/操作系统文件?

java - 从 EJB 读取文件

java - 使用 .getName 打印文件名

Java - sql查询的正则表达式

java - 在 Java 中检查 Hibernate 用户名和密码

java - 如何使用 Hibernate Criteria 在 Postgresql JSON 中进行搜索并与 Lateral 一起使用

java - SecurityManager 堆栈溢出错误

java - 我的 XPath 表达式没有选择 Java 中的任何内容

java - 在构建时自动更新 Liquibase 的变更日志

java - Hibernate+SQLServer/批量只插入新记录