【问题标题】:Hibernate and JDBC performance? [closed]休眠和 JDBC 性能? [关闭]
【发布时间】:2013-06-13 13:24:01
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 对该网站的意见是off-topic
  • 您从 JDBC 更改为 Hibernate 的原因是什么?在性能方面,编写良好的 JDBC(带缓存)每次都应该击败 Hibernate。在可维护性方面,答案是......这取决于您需要什么样的查询/数据库修改......
  • 如果您主要对缓存功能感兴趣,那么为什么不选择 ehcache 而不是 hibernate?平均而言,hibernate 作者声称开销为 10%。
  • @UwePlonus,我认为寻求帮助以了解常用库的性能特征是本网站的主题。
  • 性能改进无;开发生产力,也许是的。

标签: java hibernate jdbc


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    对于大多数数据库供应商而言,与 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 指南以获得更好的视图:

    【讨论】:

    • 报告没有不确定性的测量是没有意义的
    猜你喜欢
    • 2013-05-20
    • 1970-01-01
    • 2023-03-25
    • 2011-05-01
    • 2015-02-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多