【发布时间】:2014-01-29 07:55:22
【问题描述】:
我正在两个应用程序之间进行基准测试,一个使用JPA 2/Hibernate 4 构建,另一个使用JDBC 构建。总的来说,差异不是太大(小于一个数量级)。唯一的例外是当我通过主键获取记录时。
使用 JDBC 的时间低于 10 毫秒,使用 Hibernate 的时间从不低于 60 毫秒。
我已经安装了 ehcache,但对于这个特定的查询,差异保持不变。
有没有我遗漏的技巧或技巧?
---已编辑
JPA 映射和类是使用 Hibernate 工具构建的,它们没有什么特别之处。 JDBC 从 Oracle 恢复 PL/SQL 对象(正如我在其他基准测试中测试的那样,它比恢复原始数据要慢)。
当测试的复杂性增加时,两种技术之间的比较变得更加均匀,最终 Hibernate/JPA 更适合某些测试(例如恢复大量复杂对象)。
关键是我无法使用 Hibernate/JPA 进行任何耗时少于 60 毫秒的操作。似乎 Hibernate/JPA 花费最少的时间来执行最便宜的事务(在这种情况下,通过它的 PK 恢复记录)。有什么办法可以减少这个时间?
【问题讨论】:
-
你能添加一个简单的例子(一个bean定义,一个创建脚本表......)?
-
Bean 定义由 Hibernate Tools 创建
-
请添加一个bean定义和相关的脚本表
-
我必须建立一些模拟。我会尽快做的。
-
对您的测试进行更好的描述也是有必要的,因为 JDBC 只返回原始数据,而 JPA 必须从相同的数据构建实体。