目前,我正在将JavaWeb应用程序从JDBC切换到Hibernate,在当前使用JDBC的实现中,我将应用程序初始化时将静态数据加载到静态变量中,因此我不需要每次需要一些静态数据时都直接访问数据库,现在切换到hibernate状态,据我研究,hibernate状态将加载的数据保存在缓存中,因此我想摆脱这些静态变量。
我对hibernate非常陌生,因此不确定从当前方法切换到hibernate是否会改善性能。我将进一步研究hibernate缓存,并运行一些性能测试,以查看哪种方法更好,但是希望就其他人对这两种方法的性能有何看法。
谢谢。
与大多数数据库供应商的Hibernate相比,JDBC将始终提供 更好的性能 。您可以按照下面的链接检查比较。他的结论是,Hibernate是快速与更少的行查询表时,其他JDBC是更好的方式: http://phpdao.com/hibernate_vs_jdbc/
可以在Hibernate论坛讨论中找到另一个良好的性能统计信息,网址为https://forum.hibernate.org/viewtopic.php?f=1&t=931708
它指出了由于使用Hibernate而导致的以下性能下降顺序(请注意,可以通过根据需要调整Hibernate来改善此问题:
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
Hibernate之所以选择JDBC和SQL查询,不是因为性能,而是因为主要原因是 对象持久性 和 数据库独立性 ,而不是编写特定于数据库的查询。您可以阅读以下PDF指南以获得更好的视图: