使一人关系懒惰
在我们正在开发的这个应用程序中,我们注意到视图特别慢。我分析了视图,并注意到Hibernate执行了一个查询,即使数据库中只有两个对象要获取,它也要花费10秒的时间。全OneToMany
和ManyToMany
关系很懒惰,所以这不是问题所在。在检查正在执行的实际SQL时,我注意到查询中有80多个联接。
进一步考察这个问题,我注意到这个问题是由深层次的OneToOne
和ManyToOne
实体类之间的关系。所以,我想,我只会让他们偷懒,这应该能解决问题。但是注释@OneToOne(fetch=FetchType.LAZY)
或@ManyToOne(fetch=FetchType.LAZY)
似乎不起作用。要么我得到一个异常,要么它们实际上没有被代理对象替换,因此很懒。
知道我该怎么做吗?注意,我没有使用persistence.xml
要定义关系或配置细节,所有操作都是用java代码完成的。