懒惰负载或不努力提高性能

boy*_*715 2 java hibernate lazy-loading

有人建议,为了提高我们系统的性能,应该全面使用延迟加载.这是将带有"mappedBy"属性的OneToOne映射更改为@OneToMany映射.这是为了解决和停止从数据库加载不需要的数据,这导致应用程序的缓慢.

我们运行一个多层系统(基本上是2层).我们有前端 - 使用JSF和后端,它包含业务和数据库访问层.前端和后端通信视图EJB - 但EJB中没有真正的逻辑.使用的其他技术 - Spring和Hibernate

现在,经过对该主题的一些阅读后,似乎lazing loading的使用并不是一个银弹,因为它需要正确应用.对于每个延迟加载,将发出Select语句以获取数据.还有一个问题是,如果前端访问要延迟加载的属性并且会话/连接在后端关闭,那么我们将获得null.

以上是正确的关注吗?

那么,实施延迟加载解决方案或性能改进的最佳方法/实践是什么?如果可能的话,希望不是重做数据模型.

我最初的工作是与DBA小组合作,以了解两个系统之间的情况 - 查询的外观,我们如何使用数据等.识别故障点,检查Hibernate对象/查询以了解如何最好改进它.还要查看前端以确定数据从后向前传递到何处以及如何显示等.

好方法/其他方法?

Gle*_*len 8

您应该做的第一件事就是测量您的应用程序并找出导致性能问题的确切原因.

使用像JProfiler这样的工具来找出问题所在.

一旦你知道发生了什么,你就可以决定如何修复它.

直接实施延迟加载方案而不知道导致性能问题的原因将是浪费您的时间.

如果您发现数据库层是您的问题所在,那么您可以让DBA参与进来,看看您的架构/查询是否可以在做更激进的事情之前得到改进.