performance - ORM 解决方案(JPA;Hibernate)与 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。

https://stackoverflow.com/questions/260618/

相关文章:

json - Spring REST 服务 : retrieving JSON from Reque

spring - 无法 Autowiring ServletContext

java - Spring Boot 禁用/错误映射

java - Spring MVC 示例 Web 应用程序

java - RestTemplate 不转义 url

java - Spring 的 JdbcTemplate 和事务

java - 是否可以在构造函数上使用@Resource?

spring - 不使用 Maven 下载 Spring Jars

spring - 如何在 Thymeleaf 和 Spring Boot 中显示消息?

java - Spring 抛出 HttpMediaTypeNotAcceptableExcepti