【发布时间】:2010-11-29 11:26:06
【问题描述】:
在我们正在开发的这个应用程序中,我们注意到视图特别慢。我对视图进行了分析,并注意到休眠执行了一个查询,即使数据库中只有两个对象要获取,它也需要 10 秒。所有OneToMany 和ManyToMany 关系都是懒惰的,所以这不是问题。在检查正在执行的实际 SQL 时,我注意到查询中有超过 80 个连接。
进一步检查该问题,我注意到该问题是由实体类之间的OneToOne 和ManyToOne 关系的深层层次结构引起的。所以,我想,我会让他们偷懒,这应该可以解决问题。但是注释@OneToOne(fetch=FetchType.LAZY) 或@ManyToOne(fetch=FetchType.LAZY) 似乎不起作用。要么我得到一个异常,要么它们实际上并没有被代理对象替换,因此很懒。
任何想法我将如何让它工作?请注意,我不使用persistence.xml 来定义关系或配置细节,一切都在java代码中完成。
【问题讨论】:
标签: java hibernate jpa lazy-loading one-to-one