我想优化一个加载了很多对象的页面,其中许多对象使用hibernate的延迟加载作为其属性。但是很难手动找到所有这些内容,因为当我看到说someItem.getSmth()
时,我不知道它实际上是懒得加载(它不是我的代码)我无论如何都可以跳过这些负载,因此我需要一些自动的方法来找到它。我试图打开hibernate的SQL日志记录,但它无法读取它,因为它每页加载大约50兆的日志,并且它不会告诉我调用查询的位置。是否有可能知道哪些对象是延迟加载的?从哪里开始?
答案 0 :(得分:1)
是否有可能知道哪些对象是延迟加载的以及从何处加载?
您可以解析实体bean的注释OneToOne
,OneToMany
,ManyToOne
和ManyToMany
,如果找到,请检查属性fetch
是否可以值为FetchType.LAZY
。
这可以让你知道哪些对象是延迟加载的,哪些是哪个类而不是调用的方法。