A11819
2013-06-27 11:53Hibernate速度的问题
[code="java"]
Query query = this.getSession().createQuery("from CameraEntity c where c.cameraId=:cameraId");
query.setString("cameraId", name);
List list = query.list();
if (list.size() > 0) {
CameraEntity entity = list.get(0);
entity.setCameraId(name);
return entity;
} else {
return null;
}
[/code]
使用Hibernate自带的HQL查询和
[code="java"]
Query query = this.getSession().createQuery("select c.id as id,c.storage as storage from CameraEntity c where c.cameraId=:cameraId");
query.setResultTransformer(Transformers.aliasToBean(CameraEntity.class));
query.setString("cameraId", name);
List list = query.list();
if (list.size() > 0) {
CameraEntity entity = list.get(0);
entity.setCameraId(name);
return entity;
} else {
return null;
}
[/code]
这样的写法效率差距非常的大。
在5000次查询中,第一种方式比第二种的允许时间高9倍左右。
但是第一种方式是使用hibernate管理下的,也就是说我对entity进行set之后可以自动更新上数据库,而第二种方式则不会自动更新,需要手动的update才行。
如果没有其他原因,这10倍左右的差距之下。如果不需要更新数据那么我查询是不是只用第二种方式这么写就可以了。
另外:连接部分已经全部设为lazy抓取。
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- 使用hibernate tools反向生成model和配置文件,一定要hbm.xml文件吗?
- hibernate
- 0个回答
- 关于hibernate中多个OneToMany情况如何设计映射关系
- hibernate
- 0个回答
- 如何完美的解释”延迟加载“提高查询性能这个问题?
- hibernate
- 0个回答
- 如何提高hibernate的启动速度
- hibernate
- 0个回答
- struts+spring+hibernate架构的系统是否可以完全替代ejb
- hibernate
- 0个回答