Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何捕捉冬眠';什么是惰性负载?_Java_Hibernate - Fatal编程技术网

Java 如何捕捉冬眠';什么是惰性负载?

Java 如何捕捉冬眠';什么是惰性负载?,java,hibernate,Java,Hibernate,我想优化一个页面,其中加载了许多对象,其中许多对象的属性使用hibernate的延迟加载。但是手动查找它们很困难,因为当我看到saysomeItem.getSmth()时,我不知道它实际上是延迟加载的(这不是我的代码),而且我可以跳过一些加载,因此我需要一些自动查找方法。我试图打开hibernate的SQL日志记录,但无法读取它,因为它在每页加载时会写入大约50兆的日志,而且它没有告诉我查询是从哪里调用的。是否有可能知道哪些对象是延迟加载的以及从何处加载的 是否有可能知道哪些对象是延迟加载的以及

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

是否有可能知道哪些对象是延迟加载的以及从何处加载的

您可以分析实体bean中的注释
OneToOne
OneToMany
ManyToOne
ManyToMany
,如果找到,请检查属性
fetch
是否具有值
FetchType.LAZY


这可以让你知道延迟加载了哪些对象,以及从哪些类(而不是方法)调用的位置。

但这就是我所谓的“手动”:)这样我会错过很多东西,因为加载了很多对象和加载数据的很多场景,所以手动查找所有内容确实很困难。@mykola,好吧,你也试着去挖掘5000万个大的“Maualy”滞后!对于这样的任务,除非已经有一个工具可以帮助它,否则您将始终需要“手动”编写一些小实用程序来自动完成它,它使用一些正则表达式解析日志文件,提取您想要的内容。如果您不需要从中调用延迟加载方法的方法,那么答案中的方法是可以的,您不会错过任何东西。另外,请在您的问题中添加您想要了解的内容的描述,它将帮助人们给出更合适的答案。问题是没有什么可解析的,因为hibernate日志不包含关于是延迟加载还是其他原因的信息。@mykola好吧,看来你唯一能做的就是分析代码。若您想在一个步骤中完成,而不是在运行时,那个么上述方法可能是可行的。如果您想在运行时执行此操作,那么您可能希望查看并截获对使用上述注释注释的方法的方法调用,一旦有了它们,您也可以像上面的方法一样继续。谢谢您的提示!我将尝试深入研究它(aspectj)