Java Hibernate和JDBC性能?

Java Hibernate和JDBC性能?,java,hibernate,jdbc,Java,Hibernate,Jdbc,目前我正在将java web应用程序从JDBC切换到Hibernate,在我当前使用JDBC的实现中,我将应用程序初始化时的静态数据加载到静态变量中,这样我就不必每次需要一些静态数据时都直接访问数据库,现在切换到hibernate,我正在考虑去掉这些静态变量,因为hibernate将加载的数据保存在缓存中 我对hibernate相当陌生,所以我不确定从当前方法切换到hibernate是否会带来任何性能改进。我将进一步研究hibernates缓存,并运行一些性能测试,看看哪种方法更好,但我想听听其

目前我正在将java web应用程序从JDBC切换到Hibernate,在我当前使用JDBC的实现中,我将应用程序初始化时的静态数据加载到静态变量中,这样我就不必每次需要一些静态数据时都直接访问数据库,现在切换到hibernate,我正在考虑去掉这些静态变量,因为hibernate将加载的数据保存在缓存中

我对hibernate相当陌生,所以我不确定从当前方法切换到hibernate是否会带来任何性能改进。我将进一步研究hibernates缓存,并运行一些性能测试,看看哪种方法更好,但我想听听其他人对这两种方法性能的看法


谢谢。

对于您的特殊情况,我建议您创建自己的对象,以保持所需的静态值。您可以在应用程序初始化期间或首次请求该数据时填充它

至于相对性能,最好的情况是基于Hibernate的数据访问层的性能与JDBC一样好,或者性能下降不会影响总体用户体验。Hibernate用于加快开发速度和增强可维护性,而不是获得优于JDBC的性能优势。

对于大多数数据库供应商来说,JDBC总是比Hibernate提供更好的性能。您可以查看下面链接中给出的比较。他得出结论,Hibernate在查询行数较少的表时速度很快,而JDBC则要好得多:

另一个好的性能统计数据可以在Hibernate论坛的讨论中找到

它说明了由于使用Hibernate而受到的性能影响的顺序如下(请注意,可以根据需要调整Hibernate来提高性能:


选择Hibernate而不是JDBC和SQL查询并不是因为性能,而是因为不编写特定于数据库的查询,主要是因为对象持久性和数据库独立性。您可以阅读以下PDF指南以获得更好的视图:


您的观点是针对本网站的。您从JDBC改为Hibernate的原因是什么?就性能而言,编写良好的JDBC(带缓存)每次都应该打败Hibernate。在可维护性方面,答案是……这取决于您需要什么样的查询/数据库修改……如果您主要对缓存功能感兴趣,那么为什么不选择ehcache而不是Hibernate呢?Hibernate的作者平均声称开销为10%。@UwePlonus,我认为本网站的主题是帮助您了解常用库的性能特征。性能改进否;开发生产力,可能是。报告测量结果而不考虑其不确定性是毫无意义的
Objects: 8 - Hibernate: 10ms / Direct JDBC: 10ms = Ratio: 1.0 
Objects: 16 - Hibernate: 10ms / Direct JDBC: 0ms = Ratio: Infinity 
Objects: 64 - Hibernate: 20ms / Direct JDBC: 10ms = Ratio: 2.0 
Objects: 256 - Hibernate: 150ms / Direct JDBC: 30ms = Ratio: 5.0 
Objects: 512 - Hibernate: 210ms / Direct JDBC: 40ms = Ratio: 5.25 
Objects: 1024 - Hibernate: 410ms / Direct JDBC: 70ms = Ratio: 5.857143 
Objects: 2048 - Hibernate: 681ms / Direct JDBC: 180ms = Ratio: 3.7833333