【发布时间】:2012-03-06 12:08:59
【问题描述】:
众所周知,由于内部缓存和对象状态的管理,Hibernate 基本上对数据库的所有操作都引入了开销。
我们目前在我们的应用程序中使用纯 SQL (JDBC) 读取数据并使用 Hibernate 进行保存和更新。原因是我们需要在每次计算中加载大量信息,但只更新有限的部分。
现在,我们知道这种方法并不是最干净的,我们进行了一些测试,试图微调 Hibernate 的读取,但我们取得的成果如下:
读取时间 JDBC (session.doWork): 23 s
休眠读取时间(session.createQuery with lazy fetch):94 秒
在我们看来,现有的开销是由于 Hibernate 的额外处理造成的,我们想知道并行读取本身是否有帮助(我们正在读取很多可以并行执行的表)? Hibernate 的会话和事务是否设计为可以安全地从多个线程中使用?
另外,如果您有任何其他想法,可以帮助加快准备工作,我们将不胜感激。
【问题讨论】:
标签: multithreading performance hibernate fetch