Hibernate速度的问题

问题描述

Query query = this.getSession().createQuery("from CameraEntity c where c.cameraId=:cameraId");query.setString("cameraId", name);List<CameraEntity> list = query.list();if (list.size() > 0) {CameraEntity entity = list.get(0);entity.setCameraId(name);return entity;} else {return null;}使用Hibernate自带的HQL查询和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<CameraEntity> list = query.list();if (list.size() > 0) {CameraEntity entity = list.get(0);entity.setCameraId(name);return entity;} else {return null;}这样的写法效率差距非常的大。在5000次查询中,第一种方式比第二种的允许时间高9倍左右。但是第一种方式是使用hibernate管理下的,也就是说我对entity进行set之后可以自动更新上数据库,而第二种方式则不会自动更新,需要手动的update才行。如果没有其他原因,这10倍左右的差距之下。如果不需要更新数据那么我查询是不是只用第二种方式这么写就可以了。另外:连接部分已经全部设为lazy抓取。

解决方案

1、第一种方式的耗时估计是session flush时的update造成的可以考虑:1.1、StatelessSession 1.2、session.evict(entity) 从session中移除掉 那么就会变成一个托管对象,更新不会造成update

时间: 2024-09-19 09:11:53

Hibernate速度的问题的相关文章

hibernate查询速度问题

问题描述 用hibernate查询数据,记录1000条,一次查出,不分页,从按查询到显示在jsp需要10几秒,请问是否正常?问题补充:要求不分页的,直接显示1000条 解决方案 应该不是慢在查询上面了,应该是查询的1000条记录放在List之中,以及把List之中的objcet显示给页面速度慢.你可以试一下直接在数据库中查询这些记录 看看速度多少,如果直接查1~2s Hibernate查也就在4s 应该用不了. 我的意思是 Hibernate不比直接SQL查慢多少.解决方案二:查询有没有表连接.

struts2+Hibernate查询速度为何那么慢

问题描述 struts2+hibernate整合,将hibernate查询出List对象在jsp页面使用struts2的<s:iterator>标签显示,为何加载速度是那么的慢啊? 谢谢啦!! 问题补充:luo_yong_men 写道 解决方案 一层一层的测,数据层.业务层.表现层分开测,另外struts2的迭代标签效率确实很低下,这个我测过的,jstl的c标签效率比它效率高不少.解决方案二:你说的这个慢 不能这样说 是hibernate慢 应为 你已经是整个过程了你直接在 dao层 对查询前

maven导入及错误 cvs导入更新 myeclipse速度优化 myeclipse 右键菜单 add hibernate

(一)myeclipse 速度的优化, (1)关闭project ->build automatically, (2)关闭验证 window->preference->myeclipse->validation 关闭所有. (二)maven 的多个module导入->选择parent项目,右键->import->maven4myeclipse->exiting maven  projects (三)maven 恢复 Preferences > Gene

浅谈Hibernate框架获得成功的几个理由

飞快的版本发布 保持活跃的开发速度,经常进行版本发布,甚至几天 之内就从前一个版本开发到下一个版本.这样是保证软件远离Bug的最好的办法,也可以让用户感到很放心,确信Hibernate的开发十分活跃,另外这样做也有一大好处,就是可以发现哪些功能是用户真正需要的. 回归测试 我想现在整个Java社区一定都很重视自动回归测试.如果软件的功能和设计有比较大的修改,那么一个综合性的test suite对于软件可维护性和稳定性来说实在是太重要了.我们应该有这样的意识:如果对软件的一个新功能没有进行回归测试

优化hibernate性能的几点建议

性能|优化 1.针对oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30.50.100.Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30.50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存. 即在hibernate配制文件中进行配制: 1 <property name="hibernateProperties"&

Hibernate的缓存机制介绍

缓存 缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据. 缓存的介质一般是内存,所以读写速度很快.但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质.缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期. Hibernate的缓存包括Session的缓存和SessionFactor

技巧应用:怎样提高J2EE项目的开发速度

j2ee|技巧|速度|项目 在J2EE技术体系中,往往被灌输了太多容器的概念,什么EJB容器.Servlet容器等等,而开发过程也在开发.配置.部署之间迭代与反复:如此一来常会出现令人尴尬的状况:往往花几分钟时间去改一个Bug.却要再花双倍或者更多时间去部署和测试,开发工程师们不得不中断思路,看着服务器如蜗牛般启动,并在开发工具和部署工具之间来回切换. 事实上,配置也好.部署也罢,都是开发过程中一个必不可少的阶段.如何通过集成式的开发环境将这些开发阶段有机集成在一起,是摆在我们面前的迫切需要.在

robbin:我为什么要学习Hibernate?

作者:robbin 在我做过的很多项目的过程中,我一直有一个悬而未决的问题在困扰我,那就是持久层的开发.持久层的开发一般来说要么用CMP,要么用JDBC+DAO. CMP就不用说了,它对我来说是一种失败的实践,而JDBC+DAO也存在很多的困难,我很难做到把关系表记录完整的映射到持久对象的关系上来,这主要体现在多表的关系无法直接映射到对持久对象的映射上来,可能是一个表映射多个持久对象,有可能是多个表映射一个持久对象,更有可能的是表的某些字段映射到一个持久对象,但是另外一些字段映射到别的持久对象上

JSF+Spring+Hibernate的实例讲解

js 使用JavaServer Faces(JSF).Spring Framework和Hibernate建立一个真实的Web应用程序内容概要使用JSF建立一个真实的Web应用程序不是没有意义的任务,这篇文章介绍了如何将JSF与Sping Framework和Hibernate集成,并且给出了使用这些技术建立这个真实的Web应用程序的最佳实践和设计指导 JavaServer Faces(JSF)技术是J2EE应用程序的一个新的用户接口框架,它非常适合基于MVC(Model-View-Contro