【发布时间】:2009-05-18 14:34:57
【问题描述】:
有人建议,为了提高我们系统的性能,应该全面使用延迟加载。也就是将带有“mappedBy”属性的 OneToOne 映射更改为 @OneToMany 映射。这是为了解决和停止从数据库加载不需要的数据,这会导致应用程序运行缓慢。
我们运行一个多层系统(基本上是 2 层)。我们有前端 - 使用 JSF 和包含业务和数据库访问层的后端。前后通信视图 EJB - 但 EJB 在其中没有真正的逻辑。使用的其他技术 - Spring 和 Hibernate
现在,在对该主题进行了一些阅读之后,似乎延迟加载的使用并不是灵丹妙药,因为它需要正确应用。对于每次延迟加载,都会发出一条 Select 语句来获取数据。还有一个问题是,如果前端访问要延迟加载的属性并且会话/连接在后端关闭,那么我们将得到一个空值。
以上问题正确吗?
那么,在实施延迟加载解决方案或性能改进方面,最好的方法/实践是什么?希望尽可能不要重做数据模型。
我最初的想法是与 DBA 小组合作,以了解两个系统之间发生的情况 - 查询的外观、我们如何使用数据等。识别故障点,检查 Hibernate 对象/查询看看如何最好地改进它。还要查看前端以确定数据从后端传递到前端以显示的内容和方式等。
好的方法/其他方法?
【问题讨论】:
标签: java hibernate lazy-loading