`
ynp
  • 浏览: 439832 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate 执行原生sql的几种方式

阅读更多
hibernate 执行原生sql的几种方式

import java.util.List;

import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.dto.Role;


public class HibernateTest1 {
	 public static void main(String[] args) {
	        SessionFactory sf = new Configuration().configure().buildSessionFactory();
	        Session s = null;
	        Transaction t = null;

	        try{
	            s = sf.openSession();
	            t = s.beginTransaction();

	            String sql = "SELECT id,rolename,createtime FROM sys_role"; 
	            SQLQuery query = s.createSQLQuery(sql); 
	            //方式1 error
//	            List<Object[]> list = query.list();  
	            
	           //方式2
//	            query.addScalar("id",Hibernate.INTEGER); 
//	            query.addScalar("rolename",Hibernate.STRING); 
//	            query.addScalar("createtime",Hibernate.DATE); 
//	            List<Object[]> list = query.list(); 
	            //方式3 需要对应映射的实体
	            query.addEntity(Role.class); 
	            List<Role> list = query.list(); 
	            
	            //方式4 需要hibernate版本> hibernate3.2
//	            query.addScalar("id",Hibernate.INTEGER); 
//	            query.addScalar("rolename",Hibernate.STRING); 
//	            query.addScalar("createtime",Hibernate.DATE);
//	            query.setResultTransformer(Transformers.aliasToBean(Role.class)); 
//	            List<Role[]> list = query.list(); 
	            
	            t.commit();
	       }catch(Exception err){
	            t.rollback();
	            err.printStackTrace();
	      }finally{
	            s.close();
	      }
	    }
}


参考http://bhdweb.iteye.com/blog/801084
http://www.cnblogs.com/redant/archive/2010/01/28/1658479.html
http://www.blogjava.net/yxhxj2006/archive/2012/06/30/381861.html

分享到:
评论

相关推荐

    hibernate 的createSQLQuery的几种用法

    Hibernate 的 createSQLQuery 的几种用法 Hibernate 的 createSQLQuery 是 Hibernate 框架中的一种强大且灵活的查询机制,它允许开发者使用原生 SQL 语句来查询数据库。下面是 createSQLQuery 的几种常见用法: 一...

    Hibernat使用原生的SQL

    标题 "Hibernat使用原生的SQL" 涉及的是在Java开发中如何利用Hibernate框架执行自定义的SQL语句。Hibernate是一个流行的...为了进一步学习,建议阅读该文档,进行实际的编码练习,以加深对Hibernate原生SQL使用的理解。

    Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法

    在Hibernate中执行原生SQL查询时,可以通过`addScalar`方法指定返回值的类型,从而改变Hibernate对char类型字段的处理方式。具体操作如下: ```java Session session = this.getSession(); SQLQuery query = ...

    Hibernate连表查询 Hibernate连表查询

    例如,在`findAllbyString`方法中,使用了`getSession().createSQLQuery`方法来执行原生SQL查询: ```java String queryString = "Select * from h_attribute t where ciid=24 and Isinstance=1 and Isdisplay=1"; ...

    hibernate中文参考文档

    这部分将介绍如何在Hibernate中执行原生SQL查询。 14. 性能提升:本部分可能包括如何通过合理的配置、查询优化、缓存使用等手段提升Hibernate应用的性能。 15. 工具箱指南:Hibernate提供了许多工具类和实用方法来...

    hibernate_third项目源码

    Hibernate提供了SQLQuery接口,允许你执行原生的SQL查询,并将结果映射到Java对象。 5. **结果集处理**:无论哪种查询方式,结果通常会返回List、Set或其他集合对象。你需要学会如何遍历和处理这些结果,例如,使用...

    com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案

    为了避免因只进结果集引发的异常,可以采取以下几种策略: #### 1. 修改查询类型 最直接的方法是在创建`Session`时指定查询结果集为可滚动类型(scrollable)。这可以通过在Hibernate配置文件中设置`hibernate....

    Hibernate驱动包

    然而,也需要注意到,过度依赖ORM可能导致性能问题,因此在设计大规模应用时,需要合理使用ORM并结合原生SQL进行优化。 总之,这个“Hibernate驱动包”是Java开发中的重要工具,为开发者提供了强大的数据库操作支持...

    hibernate教程

    3. **检索策略和方式**:Hibernate支持多种检索策略,如立即加载(eager)、延迟加载(lazy)等,以及HQL(Hibernate Query Language)、原生SQL等多种查询方式。 4. **数据库事务、并发、缓存与性能优化**:事务...

    Hibernate曾删改查接口实现

    主要有以下几种方式: - HQL(Hibernate Query Language):这是Hibernate特有的查询语言,语法类似SQL,但面向对象。 - Criteria API:提供了一种更加面向对象的查询方式,通过Criteria、DetachedCriteria等类...

    Hibernate 中文手册 3.1.2.pdf

    Hibernate 通过配置文件或注解的方式,使得开发者无需编写大量的 SQL 代码即可实现数据的持久化。 Hibernate 的核心是一个包含在应用程序中的 ORM 框架,它提供了从 Java 类到数据库表的映射、从 Java 数据类型到 ...

    Hibernate使用中防止SQL注入的几种方案

    因此,建议在使用Hibernate时,尽量使用它提供的ORM特性和HQL,避免直接使用原生SQL语句。 为了避免SQL注入,除了以上提到的技术手段,还应该遵循一些基本的编程准则: 1. 不要将用户输入直接拼接到SQL语句中。 2. ...

    Hibernate学习指南pdf

    - **Native SQL**: 直接执行原生SQL语句,当HQL或Criteria无法满足需求时,提供了一种后备方案。 #### 持久层设计与ORM 持久层设计是软件架构中不可或缺的一部分,其核心在于如何高效、安全地与数据库进行交互。...

    hibernate基础 入门/ hibernate basic

    4. **灵活的查询方式**:Hibernate提供了多种查询方式,包括Criteria API、Query By Example (QBE)、Hibernate Query Language (HQL)以及原生SQL等。 #### 三、Hibernate架构概览 **Hibernate架构**是围绕着几个...

    Hibernate查询解决方案

    本文将详细介绍 Hibernate 提供的几种查询方式及其应用场景。 #### 二、重要知识点 ##### 1. Session 对象与查询操作 在 Hibernate 中,所有持久化操作都需要通过 Session 对象来完成,包括查询操作。Session ...

    HQL是hibernate自己的一套查询

    HQL是Hibernate框架中用于执行数据库操作的一种面向对象的查询语言。与传统的SQL语言不同,HQL更加注重于面向对象的特性,它支持Java类名和属性名作为查询条件,使得开发者可以直接使用Java对象模型来编写查询语句,...

    hibernate_reference.pdf

    - **Native SQL**:允许直接执行原生 SQL 语句,以支持那些 HQL 或 Criteria API 无法完成的功能。 #### 八、性能优化 - **一级缓存**:Hibernate 自动维护的一级缓存,用于存储从数据库加载的数据。 - **二级缓存...

    hibernate

    3. **Native SQL**: 直接使用原生SQL进行查询,适用于Hibernate无法满足的复杂查询。 综上所述,Hibernate 是Java开发中不可或缺的工具,通过对象关系映射技术极大地简化了数据库操作,提升了开发效率。深入了解并...

Global site tag (gtag.js) - Google Analytics