我需要能够以每 5 秒至少 8000 个对象的一致速率在内存 HSQL 数据库中插入/更新对象。
我在 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 来实现未来的目的、可扩展性,并且因为外键关系(一对多和多对多)很难手动维护;但性能要求似乎指向使用纯 JDBC。
有什么想法为什么会出现如此巨大的差异吗?
我们在批处理模式下比较 Hibernate 和 JDBC (Statement#executeBatch()) 时也有类似的经验。基本上,Hibernate 似乎在批量操作方面做得不太好。在我们的例子中,Hibernate 实现在我们的生产硬件上足够快。
您可能想要做的是将数据库调用包装在 DAO 中,为您的应用程序提供访问数据的一致方式。在方便的地方使用 Hibernate 实现您的 DAO,在需要性能要求的地方使用 JDBC 实现您的 DAO。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)