如果我们有一个具有
的Web应用程序从行为上看,很多数据检索(70%)和数据更新为30% 以下有效消耗数据库连接的最佳实践是什么,并且在连接使用时也没有太多泄漏?
对不起这个有点长的问题,但是我发现这是一个常见的查询,我尝试合并它。感谢您的耐心和指导。谢谢你的帮助。
答案 0 :(得分:16)
这听起来像是一个非常典型的Spring / Hibernate应用程序,所以我建议遵循我最近在another answer中概述的当前最佳实践。具体做法是:
此外,显然使用连接池。 Apache Commons DBCP是一个很好的选择。 “连接使用中没有太多泄漏”是不够的。您必须具有零连接泄漏。根据Spring来管理您的资源将有助于确保这一点。至于任何其他性能问题,不要试图过早优化。等到你看到问题所在的位置,然后找出解决每个问题的最佳方法。由于您的瓶颈很可能与数据库相关,请查看Hibernate参考的the performance chapter以了解您遇到的问题。它涵盖了缓存和获取策略的重要概念。
答案 1 :(得分:2)
EntityManager
。请勿将其标记为扩展<tx:annotation-driven />
和@Transactional
- 仅限于服务层@Transactional(readOnly=true)
OpenSessionInView
和懒惰的集合。这是主观的,但在我看来,必须初始化离开服务层的所有对象。对于小型集合(例如角色列表),您可以拥有热切的集合。对于更大的集合,请使用HQL查询。