有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么Hibernate4可以比JdbcTemplate更快?

我有一个项目,Spring4和Hibernate4作为JPA。我有一个DAO层bean,其方法如下:

@Transactional
public MyDtoObject getDataWithALotAggregation(String params){
 String queryStr = "select aLotAggregatedData from aLotJoinedTables where aLotParams="+params;
Object[] rawData = sessionFactory
  .getCurrentSession()
  .createSQLQuery(queryStr)
  .uniqueResult();
return mapRawDataToMyDtoObject(rawData);
}

我刚刚比较了这个方法的计时和jdbcTemplate.queryForObject(queryStr, mapper, params)的计时 我很惊讶Hibernate比JDBCAPI快一点(约5-10%)

知道为什么Hibernate更快或JdbcTemplate如此慢吗

我确信Hibernate尤其是处理事务的Hibernate应该比JdbcTemplate慢


共 (1) 个答案

  1. # 1 楼答案

    之所以速度较慢,很可能是因为hibernate生成的查询与您的不同

    我猜你的代码有这个.uniqueResult();,它检查重复的对象。数据集越大,你在你的案例中感受到的就越多。但是,它可能是映射的列数。请求的列越多,响应越慢