我想优化一个加载了很多对象的页面,其中许多对象使用 hibernate 的延迟加载来获取其属性。但很难手动找到所有这些,因为当我看到 someItem.getSmth()
时,我不知道它实际上是延迟加载的(这不是我的代码),而且我无论如何都可以跳过其中一些加载,因此我需要一些自动方式来查找它。我尝试打开 hibernate 的 SQL 日志记录,但无法读取它,因为它每次加载页面会写入大约 50 兆的日志,并且它不会告诉我查询是从哪里调用的。是否有可能以某种方式知道哪些对象是延迟加载的以及从哪里加载的?
最佳答案
Is it possible to know somehow which objects are lazy loaded and from where?
您可以解析实体 bean 的注释 OneToOne
、OneToMany
、ManyToOne
和 ManyToMany
,如果找到,请检查属性 fetch
是否具有值 FetchType.LAZY
。
这可以让您知道哪些对象是延迟加载的以及来自哪些类,但不知道调用的方法。
关于java - 如何捕获hibernate延迟加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754305/