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的查询方式详解 #### 引言 Hibernate作为Java领域中最流行的ORM(Object-Relational Mapping)框架之一,提供了一系列高效、灵活的查询机制,旨在桥接对象模型与关系数据库之间的鸿沟。本文将深入...
**Hibernate查询方式详解** 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将深入探讨Hibernate 3.x版本中的查询方式,包括基本查询、HQL(Hibernate Query ...
总结来说,Hibernate通过Criteria、HQL和Query API提供了丰富的查询机制,满足了各种数据库操作需求。而分页查询是大数据量场景下的常用策略,Hibernate提供了简单的API来实现。理解并熟练掌握这些查询方式,将有助...
根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...
Hibernate提供的各种查询方法各有优势,可以根据实际需求和项目规模选择合适的方式。HQL适用于简单的查询,Criteria API和DetachedCriteria适合构建复杂条件,Native SQL则在处理特定数据库功能时不可或缺。理解并...
总结,Hibernate提供多种方式查询数据表中的字段,包括HQL、Criteria API和DetachedCriteria,选择合适的方法取决于具体需求。正确理解和使用Hibernate,能够大大提高Java开发中的数据库操作效率。
本篇将详细讲解一个“超好用的Hibernate查询工具类”,以及如何利用它来提升开发效率。 首先,我们需要理解Hibernate的基本概念。Hibernate是一种持久化框架,它可以将Java对象映射到数据库表,从而避免了编写大量...
本篇文章将详细解析Hibernate中的几种主要查询方式,包括联表查询、分页查询、位置参数查询、占位符查询(冒号查询)以及统计查询,这些都是在实际开发中非常常见的需求。 首先,我们来看**联表查询**。在Hibernate...
在Java的持久化框架Hibernate中,查询是连接应用程序与数据库的关键环节。Hibernate提供了两种主要的查询方式:离线查询(Criteria API...理解并熟练掌握这两种查询方式,将有助于提升Hibernate的使用效率和代码质量。
在Hibernate中,我们通常使用HQL(Hibernate Query Language)或Criteria API进行查询,但这些方式并不支持复杂的动态查询。为了实现动态SQL,我们可以借助于Hibernate的QBC(Query By Criteria)和Criteria API,...
六种方式实现Hibernate查询 Hibernate是一个功能强大的持久层框架,它提供了多种方式来查询数据库。下面我们将详细介绍六种方式实现Hibernate...我们可以根据实际情况选择合适的查询方式,以提高开发效率和查询性能。
HQL支持各种复杂的查询,如连接查询、分组查询、子查询等。例如,我们可以用以下HQL语句查询所有未删除的用户: ```java String hql = "from User u where u.deleted = false"; Query<User> query = session....
总的来说,Hibernate通过其强大的ORM能力简化了Java与MySQL数据库的交互,提供了丰富的查询方式和事务管理机制,极大地提高了开发效率。掌握这些核心知识点,对于提升JavaEE项目的开发质量与效率有着重要作用。希望...
最后,`hibernate查询`这个压缩包可能包含了一些示例代码和配置文件,用于演示如何在Java项目中实现上述查询方式。通过分析这些文件,你可以更好地理解Hibernate查询的工作原理,并将其应用到自己的项目中。 总之,...
【描述】:在ORM框架Hibernate中,数据查询和检索是一个核心功能,它提供了多种查询方式,包括标准化对象查询(Criteria Query)、Hibernate查询语言(HQL)和原生SQL查询。其中,HQL作为官方推荐的查询方式,具有...
本篇文章将深入探讨如何使用Hibernate实现模糊查询和分页功能,这对于任何需要处理大量数据的应用程序来说都是至关重要的技能。 首先,让我们了解Hibernate的核心概念。Hibernate是一个开源的JPA(Java Persistence...
本文将深入探讨Hibernate如何实现分页查询,并分析不同数据库方言下的具体实现方式。 #### 二、Hibernate 分页查询概述 Hibernate提供了两种基本的分页查询方法: 1. **基于SQL LIMIT关键字的分页**:这种方式适用...
Hibernate 支持多种方式来实现多表连接查询,包括 HQL(Hibernate Query Language)和 Criteria 查询。本项目主要关注 Criteria API 的使用,这是一种基于 Java 对象的查询方式,更加灵活且易于理解和维护。 **...
虽然Hibernate提供了ORM的方式,但有时我们可能需要使用原生的SQL查询来访问数据库,尤其是当ORM无法满足复杂需求时。在Hibernate中,可以通过以下方式执行原生SQL: 1. `Session.createSQLQuery(sql)`:创建一个...