我正在两个应用程序之间进行基准测试,一个使用JPA 2/Hibernate 4
构建,另一个使用JDBC
构建。总的来说,差异不是太大(小于一个数量级)。唯一的例外是当我通过主键获取记录时。
使用JDBC的时间不到10毫秒,使用Hibernate时,它永远不会超过60毫秒。
我已经安装了ehcache,但对于这个特定的查询,差异仍然是相同的
我缺少什么诡计或黑客?
---被修改
JPA映射和类是使用Hibernate Tools构建的,并没有什么特别之处。 JDBC从Oracle恢复PL / SQL对象(正如我在其他基准测试中测试的那样,比恢复原始数据慢)。
当测试的复杂性增加时,两种技术之间的比较变得更加均衡,并且最终Hibernate / JPA对某些测试更好(比如恢复很多复杂的对象)。
关键是我无法使用Hibernate / JPA进行任何操作,花费的时间少于约60 ms。似乎Hibernate / JPA花费最少的时间来完成最便宜的交易(在这种情况下,通过它的PK恢复记录)。有没有办法减少这个时间?
答案 0 :(得分:0)
不仅可以检查已用时间,还可以分析执行情况,以便了解Hibernate在此期间做了什么。你要查看我说的@Andrei。由于对象实例化和反射操作,大部分开销很可能发生。由于id搜索将返回更少的数据,因此Hibernate开销可能更明显。