- 浏览: 1240271 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
使用:session.createSQLQuery
注意:这里对应的就是查询表名了..
package com.bjsxt.hibernate; import java.util.Iterator; import java.util.List; import org.hibernate.SQLQuery; import org.hibernate.Session; import junit.framework.TestCase; /** * 嵌入原生sql测试 * @author Administrator * */ public class SqlQueryTest extends TestCase { public void testQuery1() { Session session = null; try { session = HibernateUtils.getSession(); SQLQuery sqlQuery = session.createSQLQuery("select * from t_student"); List students = sqlQuery.list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } }
转载返回对象的结果集:http://bhdweb.iteye.com/blog/801084
HQL尽管容易使用,但是在一些复杂的数据操作上功能有限。特别是在实现复杂的报表统计与计算,以及多表连接查询上往往无能为力,这时可以使用SQL(Native SQL)实现HQL无法完成的任务。 1、使用SQL查询 使用SQL查询可以通过两种方式来实现: (1)、利用Hibernate提供的SQLQuery对象执行。即可以通过Session对象的createSQLQuery()方法获取。如: String sql = "select * from product limit 0,10"; SQLQuery query = session.createSQLQuery(sql); List<Object[]> = query.list(); 注意:查询结果返回的是一个Object的数组。 (2)、利用ResultMetaData对象来实现执行SQL语句,但是如果过多地使用这种方法就会对系统的性能产生影响,它将降低运行效率。通过addScalar()方法设置返回数据的类型可以减少ResultSetMetaData对象的使用而提高运行效率。如: String sql = "select * from product limit 0,10"; SQLQuery sqlQuery = session.CreateSQLQuery(); sqlQuery.addScalar("id",Hibernate.INTEGER); sqlQuery.addScalar("name",Hibernate.STRING); sqlQuery.addScalar("addre",Hibernate.STRING); sqlQuery.addScalar("des",Hibernate.STRING); List<Object[]> list = sqlQuery.list(); 2、返回SQL查询的持久对象 获取SQL查询的持久对象有三种方式实现: 方式1:Hibernate不仅能把查询到的记录封装为包含多个Object数组的List对象返回,还可以把每一条查询到的记录封装成持久对象后返回包含这些对象的List对象。如: String sql = "select * from product limit 0,10"; SQLQuery sqlQuery = session.CreateSQLQuery(); sqlQuery.addEntity(Product .class); List<Product> list = sqlQuery.list(); 方式2:使用大括号指定查询的字段,然后通过SQLQuery对象对象的addEntity()方法关联SQL中的别名和持久化类确定要返回的List对象中的每个元素类型。如: String sql = "select{p.*} from Product p,Category c where p.category_id=c.id"; SQLQuery sqlQuery = session.CreateSQLQuery(); sqlQuery.addEntity("p",Product.class); List<Product> list = sqlQuery.list(); 方式3:同时使用SQLQuery对象的addScalar()方法和Transformers对象的aliasToBean()方法关联数据库的表与持久化类确定返回记录的各个字段与持久化类属性的对象对应关系。如: String sql = "select p.id,p.name from product p,Category c where p.category_id = c.id"; SQLQuery sqlQuery = session.createSQLQuery(sql); sqlQuery.addScalar("id",Hibernate.INTEGER) .addScalar("name",Hibernate.STRING); sqlQuery.setResultTransformer(Transformers.aliasToBean(Product.class)); List<Product> list = sqlQuery.list();
发表评论
-
Hibernate抓取策略二
2010-05-11 17:56 1085在Classes与Student一对多映射中,我们将Set里面 ... -
Hibernate抓取策略一
2010-05-11 16:29 1323抓取策略指多表关联查询的时候,Hibernate会发出多条sq ... -
Hibernate查询缓存
2010-05-11 01:15 1618二级缓存中,如果不设置“查询缓存”,那么hibernate只会 ... -
Hibernate所需完整类库
2010-05-11 01:08 892附件为最新配置Hibernate所需的包. 由来: 一、下 ... -
Hibernate 二级缓存缺少包出现的异常
2010-05-10 23:29 2338由于二级缓存使用的包org.hibernate.cache.E ... -
转:Hibernate性能优化之二级缓存
2010-05-10 17:28 1142http://chenhongbin007.blog.163. ... -
Hibernate lazy加载FOR 单端关联
2010-05-10 00:54 1324Hibernate单端关联懒加载策略:即在<one-to ... -
Hibernate lazy加载FOR Connection
2010-05-10 00:28 1199Hibernate集合属性的懒加载策略: 在集合属性上, ... -
Hibernate lazy加载FOR Class
2010-05-09 23:51 1057lazy策略可以用在: * <class>标签 ... -
Hibernate性能优化:二级缓存
2010-05-06 16:48 1070hibernate二级缓存 定义步骤: 1、打开缓存, ... -
Hibernate性能优化:一级缓存
2010-05-06 16:33 1126一级缓存与session周期一致,二级缓存与sessionFa ... -
Hibernate悲观锁与乐观锁及事务管理机制
2010-05-06 11:57 1197引用: 悲观锁与乐观锁: http://www.iteye ... -
Hibernate学习笔记博客
2010-05-06 11:32 725网上也有人自学hibernate的笔记 http://hi. ... -
Hibernate与EJB的区别
2010-05-05 18:09 878Hibernate不支持分布式应用 -
Hibernate对象状态
2010-05-05 17:48 1775Hibernate对象有三种状态: 瞬时状态(Transie ... -
Hibernate HQL示例十二:DML更新、删除及与Hibernate持久化更新
2010-05-05 16:42 1977DML更新及删除 示例: package com.bjsx ... -
Hibernate HQL示例十一:分页查询
2010-05-05 16:21 1142分页查询: select * from t_student ... -
Hibernate HQL示例十:统计查询
2010-05-05 15:57 2114统计函数的使用 count(*) 等 package co ... -
Hibernate HQL示例九:连接查询
2010-05-05 15:38 3539inner join left out join rig ... -
Hibernate HQL示例八:查询对象导航及Implicit Join
2010-05-05 10:32 1689通过Student对象导航到class对象的id 如下: ...
相关推荐
在Java开发中,Hibernate作为一个非常流行的ORM框架,提供了多种查询方式,其中就包括了HQL(Hibernate Query Language)和原生SQL查询。本文将针对给定代码片段中的核心知识点——如何在Hibernate中使用原生SQL而非...
【描述】:在ORM框架Hibernate中,数据查询和检索是一个核心功能,它提供了多种查询方式,包括标准化对象查询(Criteria Query)、Hibernate查询语言(HQL)和原生SQL查询。其中,HQL作为官方推荐的查询方式,具有...
JPA--HQL查询(手动写原生查询sql,复杂查询必备) JPA(Java Persistence API)是一种JavaEE标准,用于持久化数据,HQL(Hibernate Query Language)是 Hibernate 框架提供的一种查询语言,它允许开发者使用面向...
虽然HQL提供了很多便利的功能,但在某些情况下可能还需要直接使用原生SQL语句。Hibernate也支持这种方式。 ```java Session session = HibernateUtil.getSession(); Query q = session.createSQLQuery("SELECT * ...
原生SQL查询允许开发者直接执行SQL语句,而HQL则是面向对象的查询语言,类似于SQL但更接近于Java。 4. 封装SQL查询结果为对象: - `Session`接口:执行SQL查询的主要入口点,它是Hibernate的核心接口,提供了打开...
NSQL指的是原生SQL语句,即直接使用的SQL语句。在Hibernate中,可以通过`createSQLQuery()`方法来执行NSQL语句。这种方式适用于那些无法通过HQL表达的复杂查询或者需要与特定数据库特性紧密结合的情况。 **示例代码...
除了HQL,Hibernate还支持原生SQL查询。下面的代码示例演示了如何使用原生SQL执行查询: ```java public ArrayList select(String sql) throws Exception { Session session = HibernateSessionFactory.current...
查询数据的方法有两种实现,一种是基于HQL(Hibernate Query Language),另一种是基于原生SQL。 - 基于HQL的通用查询: HQL是Hibernate提供的面向对象的查询语言,可以方便地操作对象和属性。`select`方法接收一个...
SQL语句封装是指将复杂的、重复的SQL查询语句进行抽象和封装,以便在需要的时候方便调用,提高代码的可读性、可维护性和复用性。这一技术在开发过程中广泛应用,尤其是在大型项目或团队协作中。 **1. SQL语句封装的...
Hibernate提供了一种方便的方式来处理分页查询,通过Criteria、HQL或Query接口的setFirstResult和setMaxResults方法。这些方法允许我们指定从哪个结果开始以及最多返回多少结果,从而实现分页。例如: ```java ...
在本文中,我们将深入探讨HQL(Hibernate Query Language),一种专为Hibernate ORM框架设计的查询语言,用于在Java应用程序中操作...在实际应用中,根据项目需求和性能考虑,有时可能需要在HQL和原生SQL之间做出选择。
4. **定义Hibernate Native SQL查询**:由于Hibernate默认不支持调用存储过程或函数,我们需要使用`@NamedNativeQuery`或`@SqlResultSetMapping`注解来定义一个原生SQL查询,用于调用Oracle函数。例如: ```java @...
以上介绍了Hibernate中几种常见的查询方式,包括HQL、QBC、原生SQL以及一些高级查询技巧如分组、排序等。掌握这些基本操作可以帮助开发者更高效地使用Hibernate框架进行数据访问操作。随着实践经验的积累,还可以...
- **SQL 查询**:Hibernate 也支持原生 SQL 查询,可以通过 `createSQLQuery` 方法实现。 ```java SQLQuery query = session.createSQLQuery("SELECT * FROM user WHERE name = ?"); query.setString(0, name); ...
另一种方法是使用原生SQL查询,这样可以直接控制SQL语句的生成,包括使用LIMIT和OFFSET关键字(对于MySQL等数据库)或ROW_NUMBER()函数(对于SQL Server)来实现分页。这同样可以绕过Hibernate的默认只进结果集行为...
- 定义 HQL 查询语句: ```xml <query name="findStudentById" query="from Student where stuId=:id"/> ``` - 调用: ```java Query query = session.getNamedQuery("findStudentById"); query....
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,而无需编写大量的SQL语句。在Java应用中,Hibernate极大地简化了数据持久化的复杂度,使得开发人员能够更加专注于...
- `Query`主要用于执行HQL或原生SQL查询。 - `Criteria`则是基于标准的SQL查询语法,更加灵活,适用于构建复杂的查询条件。 4. **占位符查询**:在构造SQL或HQL语句时,可以使用参数化查询(即占位符查询),这种...
4. 查询:HQL、Criteria API或原生SQL查询,获取数据并转化为Java对象。 六、级联操作与缓存 1. 级联操作:通过@Cascade注解,可以在父对象的操作中自动处理子对象的CRUD。 2. 缓存:Hibernate提供了第一级缓存...
在 Hibernate 中进行查询是其核心功能之一,本文将详细介绍 Hibernate 的几种查询方式,包括 HQL (Hibernate Query Language) 查询、QBC (Query By Criteria) 查询以及 QBE (Query By Example) 查询,并结合示例代码...