为什么Hibernate 4可能比JdbcTemplate更快?

时间:2019-06-21 17:00:16

标签: java spring hibernate spring-jdbc

我有一个使用Spring 4和Hibernate 4作为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比JDBC API快一点(〜5-10%)。

有人知道为什么Hibernate更快或JdbcTemplate这么慢吗?

我确定,尤其是在事务处理方面,Hibernate应该比JdbcTemplate慢...

1 个答案:

答案 0 :(得分:1)

之所以变慢的原因很可能是因为hibernate生成的查询与您的查询不同。

我的猜测是您的代码中包含此.uniqueResult();,用于检查重复的对象。数据集越大,您遇到的情况就越多。但是,它可能是映射的列数。请求的列越多,响应速度越慢。