在写入较少的情况下,hibernate是否会成为开销

时间:2012-08-08 07:17:04

标签: java performance hibernate java-ee

我们正在开发一个与数据仓库交互并检索数据以进行分析的应用程序。

在这种情况下,Hibernate是否会成为性能开销,因为对数据仓库的写入次数会非常少。

意图是业务层和数据层之间存在松耦合。

对于这个要求,Spring JDBC是否比使用ORM更理想?

4 个答案:

答案 0 :(得分:2)

对于更多读取,我第二次使用Spring JDBC进行缓存。我首先尝试在数据库级别进行缓存,如果性能不够,那就转到应用程序级缓存。

答案 1 :(得分:1)

Hibernate可能不如调整的Spring JDBC那么高效,但它更容易使用,因此可以提高工作效率。此外,它可能不会成为您应用程序的瓶颈!

设置非常简单,所以我建议你试一试,欣赏你节省使用它的时间!这可能比使用JDBC节省的几毫秒更有价值......

答案 2 :(得分:1)

只有在您真正计划将结果用作对象时,ORM才有用。如果你把它放在合理的缓存(ehcache)之后,性能应该与JDBC相当。

答案 3 :(得分:1)

Hibernate在大多数读取应用程序的情况下表现更好。 请注意,由于以下因素,您可能仍会遇到性能问题:
A.对象代理的大量使用
B. SQL生成可能是好的,但没有优化 - 我会认真地建议她在配置中打开show_sql = true属性,并在一些基准测试中仔细监视SQL调用,如果你选择hibernate解决方案。


要克服B - 请考虑通过hibernate调用存储过程并将结果映射到对象(使用Hibernate进行对象映射,而不是用于SQL生成),在这个意义上,Hibernate将更接近Spring-JDBC的行为。
另外,考虑使用Hibernate的缓存状态来提高性能 - 不确定在你的情况下是否可行 - 一个。查询缓存
湾第一级缓存(在会话范围内)
C。二级缓存 - 在应用程序范围内 我还建议你做一个正确的设计,让你的DAL尽可能松散耦合,所以如果Hibernate运行不好,你很容易切换到其他选择,比如Spring-JDBC
< / p>