使一人关系懒惰

使一人关系懒惰

在我们正在开发的这个应用程序中,我们注意到视图特别慢。我分析了视图,并注意到Hibernate执行了一个查询,即使数据库中只有两个对象要获取,它也要花费10秒的时间。全OneToManyManyToMany关系很懒惰,所以这不是问题所在。在检查正在执行的实际SQL时,我注意到查询中有80多个联接。

进一步考察这个问题,我注意到这个问题是由深层次的OneToOneManyToOne实体类之间的关系。所以,我想,我只会让他们偷懒,这应该能解决问题。但是注释@OneToOne(fetch=FetchType.LAZY)@ManyToOne(fetch=FetchType.LAZY)似乎不起作用。要么我得到一个异常,要么它们实际上没有被代理对象替换,因此很懒。

知道我该怎么做吗?注意,我没有使用persistence.xml要定义关系或配置细节,所有操作都是用java代码完成的。


当年话下
浏览 322回答 3
3回答

烙印99

Hibernate中XToOnes的基本思想是,它们在大多数情况下并不懒惰。一个原因是,当Hibernate必须决定放置代理(带有id)或空时,无论如何,它必须看另一张桌子。加入。访问数据库中的另一个表的代价很大,所以它最好在此时获取该表的数据(非懒惰行为),而不是在以后的请求中获取该数据,这将需要对同一表进行第二次访问。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java