performance - ORM 解决方案(JPA;Hibernate)与 JDBC

标签 performance hibernate spring jpa jdbc

我需要能够在内存 HSQL 数据库中以每 5 秒至少 8000 个对象的一致速率插入/更新对象。

我在 Spring/Hibernate/JPA 和纯 JDBC 之间做了一些比较性能测试。我发现使用 HSQL 的性能存在显着差异。使用 Spring/Hib/JPA,我可以在 5 秒内插入 3000-4000 个 1.5 KB 对象(具有一对多和多对多关系),而直接JDBC 调用我可以插入 10,000-12,000 个相同的对象。

我无法弄清楚为什么会有如此巨大的差异。我已经调整了 Spring/Hib/JPA 设置很多,试图在没有运气的情况下接近性能。我想将 Spring/Hib/JPA 用于 future 用途、可扩展性,并且因为外键关系(一对多和多对多)难以手动维护;但性能要求似乎指向使用纯 JDBC。

任何想法为什么会有如此巨大的差异?

最佳答案

我们在批处理模式下(Statement#executeBatch())比较 Hibernate 和 JDBC 有类似的经验。基本上,Hibernate 似乎在批量操作方面做得不好。在我们的例子中,Hibernate 实现在我们的生产硬件上已经足够快了。

您可能想要做的是将您的数据库调用包装在 DAO 中,为您的应用程序提供一种一致的方式来访问您的数据。在方便的地方使用 Hibernate 和在性能要求需要的地方使用 JDBC 来实现您的 DAO。

关于performance - ORM 解决方案(JPA;Hibernate)与 JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260618/

相关文章:

linux - 测量 TCP 连接延迟的工具

java - 使用动态数据源进行动态数据源路由

spring - Tomcat 中未拾取外部化的 message.properties 文件

java - 如何正确调试Spring Events?

python - pandas iterrows 有性能问题吗?

Java 基准测试 - 为什么第二个循环更快?

android - 不应该为 RecyclerView 项目 View 使用数据绑定(bind)吗?

java - 在 Microsoft sql server 中将不同的表连接/附加在一起

java - @ManyToOne @OneToMany Mapping ,外键为空

java - 我们可以配置 Hibernate 没有 hibernate.cfg.xml