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 楼答案
之所以速度较慢,很可能是因为hibernate生成的查询与您的不同
我猜你的代码有这个
.uniqueResult();
,它检查重复的对象。数据集越大,你在你的案例中感受到的就越多。但是,它可能是映射的列数。请求的列越多,响应越慢