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 框架中的一种强大且灵活的查询机制,它允许开发者使用原生 SQL 语句来查询数据库。下面是 createSQLQuery 的几种常见用法: 一...
标题 "Hibernat使用原生的SQL" 涉及的是在Java开发中如何利用Hibernate框架执行自定义的SQL语句。Hibernate是一个流行的...为了进一步学习,建议阅读该文档,进行实际的编码练习,以加深对Hibernate原生SQL使用的理解。
在Hibernate中执行原生SQL查询时,可以通过`addScalar`方法指定返回值的类型,从而改变Hibernate对char类型字段的处理方式。具体操作如下: ```java Session session = this.getSession(); SQLQuery query = ...
例如,在`findAllbyString`方法中,使用了`getSession().createSQLQuery`方法来执行原生SQL查询: ```java String queryString = "Select * from h_attribute t where ciid=24 and Isinstance=1 and Isdisplay=1"; ...
这部分将介绍如何在Hibernate中执行原生SQL查询。 14. 性能提升:本部分可能包括如何通过合理的配置、查询优化、缓存使用等手段提升Hibernate应用的性能。 15. 工具箱指南:Hibernate提供了许多工具类和实用方法来...
Hibernate提供了SQLQuery接口,允许你执行原生的SQL查询,并将结果映射到Java对象。 5. **结果集处理**:无论哪种查询方式,结果通常会返回List、Set或其他集合对象。你需要学会如何遍历和处理这些结果,例如,使用...
为了避免因只进结果集引发的异常,可以采取以下几种策略: #### 1. 修改查询类型 最直接的方法是在创建`Session`时指定查询结果集为可滚动类型(scrollable)。这可以通过在Hibernate配置文件中设置`hibernate....
然而,也需要注意到,过度依赖ORM可能导致性能问题,因此在设计大规模应用时,需要合理使用ORM并结合原生SQL进行优化。 总之,这个“Hibernate驱动包”是Java开发中的重要工具,为开发者提供了强大的数据库操作支持...
3. **检索策略和方式**:Hibernate支持多种检索策略,如立即加载(eager)、延迟加载(lazy)等,以及HQL(Hibernate Query Language)、原生SQL等多种查询方式。 4. **数据库事务、并发、缓存与性能优化**:事务...
主要有以下几种方式: - HQL(Hibernate Query Language):这是Hibernate特有的查询语言,语法类似SQL,但面向对象。 - Criteria API:提供了一种更加面向对象的查询方式,通过Criteria、DetachedCriteria等类...
Hibernate 通过配置文件或注解的方式,使得开发者无需编写大量的 SQL 代码即可实现数据的持久化。 Hibernate 的核心是一个包含在应用程序中的 ORM 框架,它提供了从 Java 类到数据库表的映射、从 Java 数据类型到 ...
因此,建议在使用Hibernate时,尽量使用它提供的ORM特性和HQL,避免直接使用原生SQL语句。 为了避免SQL注入,除了以上提到的技术手段,还应该遵循一些基本的编程准则: 1. 不要将用户输入直接拼接到SQL语句中。 2. ...
- **Native SQL**: 直接执行原生SQL语句,当HQL或Criteria无法满足需求时,提供了一种后备方案。 #### 持久层设计与ORM 持久层设计是软件架构中不可或缺的一部分,其核心在于如何高效、安全地与数据库进行交互。...
4. **灵活的查询方式**:Hibernate提供了多种查询方式,包括Criteria API、Query By Example (QBE)、Hibernate Query Language (HQL)以及原生SQL等。 #### 三、Hibernate架构概览 **Hibernate架构**是围绕着几个...
本文将详细介绍 Hibernate 提供的几种查询方式及其应用场景。 #### 二、重要知识点 ##### 1. Session 对象与查询操作 在 Hibernate 中,所有持久化操作都需要通过 Session 对象来完成,包括查询操作。Session ...
HQL是Hibernate框架中用于执行数据库操作的一种面向对象的查询语言。与传统的SQL语言不同,HQL更加注重于面向对象的特性,它支持Java类名和属性名作为查询条件,使得开发者可以直接使用Java对象模型来编写查询语句,...
- **Native SQL**:允许直接执行原生 SQL 语句,以支持那些 HQL 或 Criteria API 无法完成的功能。 #### 八、性能优化 - **一级缓存**:Hibernate 自动维护的一级缓存,用于存储从数据库加载的数据。 - **二级缓存...
3. **Native SQL**: 直接使用原生SQL进行查询,适用于Hibernate无法满足的复杂查询。 综上所述,Hibernate 是Java开发中不可或缺的工具,通过对象关系映射技术极大地简化了数据库操作,提升了开发效率。深入了解并...