http://blog.csdn.net/zhouxianli/archive/2010/01/25/5253063.aspx
查询已知表名的实体时推荐使用getHibernateTemplate().executeWithNativeSession() + SQLQuery方式。
以下测试使用JUnit进行,仅查询一次,查询结果为5条记录。各种方式的详细代码及执行时间如下所示:
方式1,正常getHibernateTemplate().find()方式(183ms):
view plaincopy to clipboardprint?
01.List list = getHibernateTemplate()
02..find(
03."select o.id from SfmFileIndex o where o.bussNo = ? and o.typePath = ? and o.validStatus = ? order by o.uploadTime",
04.new Object[] { bussNo, typePath, "1" });
List list = getHibernateTemplate()
.find(
"select o.id from SfmFileIndex o where o.bussNo = ? and o.typePath = ? and o.validStatus = ? order by o.uploadTime",
new Object[] { bussNo, typePath, "1" });
方式2,使用getHibernateTemplate().execute() + Query方式(214ms):
view plaincopy to clipboardprint?
01.List list = (List) getHibernateTemplate().execute(
02. new HibernateCallback() {
03. public Object doInHibernate(Session session)
04. throws HibernateException, SQLException {
05. Query query = session.createQuery("select o.id
from SfmFileIndex o where o.bussNo = ? and o.typePath = ? and
o.validStatus = ? order by o.uploadTime");
06. query.setParameter(0, bussNo);
07. query.setParameter(1, typePath);
08. query.setParameter(2, "1");
09. return query.list();
10. }
11. });
List list = (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery("select o.id from
SfmFileIndex o where o.bussNo = ? and o.typePath = ? and o.validStatus =
? order by o.uploadTime");
query.setParameter(0, bussNo);
query.setParameter(1, typePath);
query.setParameter(2, "1");
return query.list();
}
});
方式3,使用getHibernateTemplate().executeWithNativeSession() + Query方式(184ms):
view plaincopy to clipboardprint?
01.List list = (List) getHibernateTemplate().executeWithNativeSession(
02. new HibernateCallback() {
03. public Object doInHibernate(Session session)
04. throws HibernateException, SQLException {
05. Query query = session
06. .createQuery("select o.id from
SfmFileIndex o where o.bussNo = ? and o.typePath = ? and o.validStatus =
? order by o.uploadTime");
07. query.setParameter(0, bussNo);
08. query.setParameter(1, typePath);
09. query.setParameter(2, "1");
10. return query.list();
11. }
12. });
List list = (List) getHibernateTemplate().executeWithNativeSession(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session
.createQuery("select o.id from SfmFileIndex o where
o.bussNo = ? and o.typePath = ? and o.validStatus = ? order by
o.uploadTime");
query.setParameter(0, bussNo);
query.setParameter(1, typePath);
query.setParameter(2, "1");
return query.list();
}
});
方式4,使用getHibernateTemplate().execute() + SQLQuery方式(102ms):
view plaincopy to clipboardprint?
01.List list = (List) getHibernateTemplate().execute(
02. new HibernateCallback() {
03. public Object doInHibernate(Session session)
04. throws HibernateException, SQLException {
05. SQLQuery query = session
06. .createSQLQuery("select o.id
from Sfm_FileIndex o where o.bussNo = ? and o.typePath = ? and
o.validStatus = ? order by o.uploadTime");
07. query.setParameter(0, bussNo);
08. query.setParameter(1, typePath);
09. query.setParameter(2, "1");
10. return query.list();
11. }
12. });
List list = (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery query = session
.createSQLQuery("select o.id from Sfm_FileIndex o where
o.bussNo = ? and o.typePath = ? and o.validStatus = ? order by
o.uploadTime");
query.setParameter(0, bussNo);
query.setParameter(1, typePath);
query.setParameter(2, "1");
return query.list();
}
});
方式5,使用getHibernateTemplate().executeWithNativeSession() + SQLQuery方式(68ms):
view plaincopy to clipboardprint?
01.List list = (List) getHibernateTemplate().executeWithNativeSession(
02. new HibernateCallback() {
03. public Object doInHibernate(Session session)
04. throws HibernateException, SQLException {
05. SQLQuery query = session
06. .createSQLQuery("select o.id from
Sfm_FileIndex o where o.bussNo = ? and o.typePath = ? and o.validStatus =
? order by o.uploadTime");
07. query.setParameter(0, bussNo);
08. query.setParameter(1, typePath);
09. query.setParameter(2, "1");
10. return query.list();
11. }
12. });
List list = (List) getHibernateTemplate().executeWithNativeSession(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery query = session
.createSQLQuery("select o.id from Sfm_FileIndex o where
o.bussNo = ? and o.typePath = ? and o.validStatus = ? order by
o.uploadTime");
query.setParameter(0, bussNo);
query.setParameter(1, typePath);
query.setParameter(2, "1");
return query.list();
}
});
方式6,使用JDBC (用于比较,代码不够健壮)(37ms):
view plaincopy to clipboardprint?
01.PreparedStatement ps = getSession()
02..connection()
03..prepareStatement(
04."select o.id from sfm_fileindex o where o.bussNo = ? and o.typePath = ? and o.validStatus = ? order by o.uploadTime");
05.ps.setString(1, bussNo);
06.ps.setString(2, typePath);
07.ps.setString(3, "1");
08.ResultSet rs = ps.executeQuery();
09.List list = new ArrayList();
10.while (rs.next()) {
11.list.add(new Long(rs.getLong(1)));
12.}
13.rs.close();
14.ps.close();
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhouxianli/archive/2010/01/25/5253063.aspx
分享到:
相关推荐
有很多人认为Hibernate天生效率比较低,确实,在普遍情况下,需要将执行转换为SQL语句的 Hibernate 的效率低于直接JDBC存取,然而,在经过比较好的性能优化之后,Hibernate的性能还是让人相当满意的, 特别是应用二...
JPA JDBC hibernate mybatis对比,里面从官方例子比较详细对比说明,从开发效率,crud执行效率等各种维度上做对比分析
有很多人认为Hibernate天生效率比较低,确实,在普遍情况下,需要将执行转换为SQL语句的Hibernate的效率低于直接JDBC 存取,然而,在经过比较好的性能优化之后,Hibernate的性能还是让人相当满意的,特别是应用二级...
学习hibernate的一些总结,包括一些比较新的应用技术,帮助初学者快速上手,有助于提高效率
JDO1.x还不能像Hibernate功能这样强大,PO不能脱离持久层,所以必须在业务层使用VO,因此必须在业务层进行大量的VO和PO的转化操作,相对于Hibernate来说,编程比较烦琐。 当然了,理论是一回事,实际操作也不一定非...
因公司存档纸质审核流程比较多,电子记录以表格形式存在,长时间的记录导致后期管理查询统计比较麻烦,现开发档案管理系统主要实现对最终归档文件的管理,因此系统忽略中间的审核过程,只实现发档部门和归档部门两头...
火龙果软件工程技术中心 摘要本文详细介绍了当前流行的开源框架Struts...随着Web开发技术的日趋成熟,在Web开发领域出现了一些现成的优秀的框架,开发者可以直接使用它们,Struts与Hibernate就是两种比较成功的框架。S
您可以使用Hibernate Middlegen、HIbernate Tools、Hibernate Syhchronizer等工具或手工的方式,编写Hibernate的领域对象和映射文件。其中对应T_FILE表的领域对象Tfile.java为: 代码 1 领域对象Tfile 1. ...
本项目为最近针对高等学校校友信息资源进行管理而设计开发、基本需求比较简单,主要涉及基本信息的管理与查询,该系统采用的开发框架: Struts2.0+Hibernate+Spring+Extjs 本系统具有非常友好的人机交互界面,数据...
现在 很多国内的企业仍然在使用原始的方式 人工管理合同 这就导致了企业合同管理的效率比较低下 为了提高企业管理效率 企业合同管理系统也就应运而生了 本系统是基于Java EE的Struts2 Hibernate和Spring三大框架 ...
三、Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而 不是Entity Bean的替代者出现的,让我再列一...
开发团队非常重要,作为一个开发团队,人员配备、开发效率等都非常重要,但是开发效率包含很多,如:代码质量(扩展性、重构性等),但是这些都是建立在规范的代码之上来进行,在一个团队中,每个开发者都有自己的习惯方式来...
本文分析了基于Hibernate框架的两种对象关系映射策略,并比较了三种继承映射策略的优缺点,设计了一种基于Hibernate的ORM持久化层的系统架构,该架构结构清晰、开发效率高,具有较高的应用价值。
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富...
jpa复杂查询,映射到具体的DTO上就比较复杂,需要类型完全匹配,还要求要建造构造函数,而且只能使用jpql查询,非常麻烦,querydsl也不方便,代码太长,后期维护的时候看上去也不直观。复杂sql还是采用原生sql比较...
目前提高应用系统开发效率的方法较多,其中比较成熟的技术有基于MVC模式的Struts技术、Spring技术和Hibernate技术,而将这3种技术有机结合起来构建SSH技术框架,不但可以有效提高系统开发效率,而且在系统安全性、...
现在hibernate3中已经放弃了对dbcp的集成,我从hibernate的官方网站上看到hibernate的作者说这样做的原因是因为实践过程中发现dbcp不稳定,至于c3p0,我见过国外有几篇文章讲到它的效率不高,不过具体怎样,我没试过...
目前提高应用系统开发效率的方法较多,其中比较成熟的技术有基于MVC模式的Struts技术、Spring技术和Hibernate技术,而将这3种技术有机结合起来构建SSH技术框架,不但可以有效提高系统开发效率,而且在系统安全性、...
因公司存档纸质审核流程比较多,电子记录以表格形式存在,长时间的记录导致后期管理查询统计比较麻烦,现开发档案管理系统主要实现对最终归档文件的管理,因此系统忽略中间的审核过程,只实现发档部门和归档部门两头...