小编典典

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

hibernate

我需要能够在内存中的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用于将来的目的,可扩展性,并且因为很难手动维护外键关系(一对多)。但是性能要求似乎指向使用纯JDBC。

关于为何会有如此巨大差异的任何想法?


阅读 255

收藏
2020-06-20

共1个答案

小编典典

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

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

2020-06-20