`
janedoneway
  • 浏览: 580527 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate中session.connection()的替代方法

    博客分类:
  • Java
 
阅读更多

From:http://essay.iteye.com/blog/656036

Hibernate3.3.2版本中getSession().connection()已被弃用,替代方法SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection()

来自类org.springframework.orm.hibernate3.SessionFactoryUtils

例子:

        java.sql.Connection c = null;
        java.sql.PreparedStatement ps = null;
        java.sql.ResultSet rs = null;

public List   method(String sql) {
        List ret = new ArrayList();
        try {
        c = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
            ps = c.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()) {
                 .....
                }
                ret.add(ro);
            }
        } catch (Exception e) {
             e.printStackTrace();

       } finally {
           close();
        }
        return ret;
    }

Hibernate API中让使用doWork(Work,work),描述如下:

connection() 
          Deprecated. (scheduled for removal in 4.x). Replacement depends on need; for doing direct JDBC stuff use doWork(org.hibernate.jdbc.Work); for opening a 'temporary Session' use (TBD).

         Work接口的execute()方法用于执行直接通过JDBC API来访问数据库的操作:
public interface Work {
//直接通过JDBC API来访问数据库的操作
public void execute(Connection connection) throws SQLException;
}
Session的doWork(Work work)方法用于执行Work对象指定的操作,即调用Work对象的execute()方法。Session会把当前使用的数据库连接传给execute()方法。

过程如下:

Transaction tx=session.beginTransaction();
//定义一个匿名类,实现了Work接口
Work work=new Work(){
public void execute(Connection connection)throws SQLException{
//通过JDBC API执行用于批量更新的SQL语句
PreparedStatement stmt=connection
.prepareStatement("update CUSTOMERS set AGE=AGE+1 "
+"where AGE>0 ");
stmt.executeUpdate();
}
};

//执行work 
session.doWork(work);
tx.commit();

当通过JDBC API中的PreparedStatement接口来执行SQL语句时,SQL语句中涉及到的数据不会被加载到Session的缓存中,因此不会占用内存空间。

分享到:
评论

相关推荐

    hibernate案例1

    映射文件可以替代注解方式,但在现代应用中,更常见的是使用注解进行映射。 然后,使用SessionFactory创建Session对象,Session是与数据库交互的主要接口。通过Session,我们可以执行CRUD操作(创建、读取、更新、...

    hibernate入门

    1. **保存(Save)**:`session.save()`或`session.persist()`方法用于将新对象插入数据库。 2. **更新(Update)**:`session.update()`用于更新已存在的对象。 3. **删除(Delete)**:`session.delete()`移除...

    javaee试卷.pdf

    7. SessionFactory在Hibernate中是线程安全的,负责生成Session实例。 8. Hibernate的默认XML配置文件名为hibernate.cfg.xml。 9. Hibernate不直接处理事务,而是依赖于JDBC或容器提供的事务管理。 10. Spring的...

    hibernate配置详解

    - Hibernate 从3.0版本开始支持注解配置,可以直接在Java类上标注属性,替代`.hbm.xml`文件。 - 示例: ```java @Entity @Table(name = "entity_table") public class Entity { @Id @GeneratedValue...

    Hibernate框架.pdf

    - **Session**:相当于 JDBC 中的 Connection,用于执行数据库操作。 - **Transaction**:处理数据库事务。 - **Query**:提供了对 HQL(Hibernate 查询语言)和 Criteria API 的支持,可以替代 Statement 和 ...

    hibernate配置连接池

    在Java的持久层框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它能够帮助开发者将数据库操作与业务逻辑解耦。在实际应用中,为了提高数据库连接的效率和系统的性能,我们通常会使用连接池来管理数据库...

    hibernate hellowrold入门级代码

    在现代的Hibernate实践中,更倾向于使用注解(Annotations)来替代XML映射。 然后,我们需要一个SessionFactory,它是Hibernate的主要工作单元,负责创建Session。SessionFactory通过读取配置文件和映射信息被初始...

    Hibernate学习笔记

    其中,重要的属性包括`hibernate.connection.driver_class`(数据库驱动)、`hibernate.connection.url`(数据库URL)、`hibernate.dialect`(数据库方言)等。 ### 4. 实体类与映射文件 - **实体类**: 是与数据库...

    hibernate完整小示例

    `Session`提供了操作数据库的方法,如查询、插入、更新和删除。 5. **持久化操作**: 在`HiberTest`类中,你可以看到如何创建`Session`,然后进行CRUD操作。例如,添加用户: ```java Session session = ...

    一个很简单的hibernate例子

    7. HQL(Hibernate Query Language)或 Criteria API:这两者是Hibernate提供的查询语言,用于替代SQL,使得数据库查询更加面向对象。 现在,让我们看一个简单的使用流程: 1. 加载配置:程序启动时,首先加载`...

    hibernate要点

    通过ORM,Hibernate简化了Java应用与数据库交互的过程,替代了传统的JDBC编码方式,提供了更为高级的数据库访问API。 #### 二、为什么使用Hibernate? 1. **简化数据库操作**:Hibernate自动处理SQL语句的生成,...

    有关数据库连接的系统配置技术.PPT

    数据库连接的系统配置技术在IT领域中至关重要,尤其是在使用Hibernate框架进行对象关系映射时。Hibernate是一个流行的Java持久层框架,它允许开发人员通过面向对象的方式操作数据库,从而简化了数据库交互。本讲将...

    hibernate 配置

    Hibernate提供了一种面向对象的查询方式——Criteria API,可替代传统的HQL(Hibernate Query Language)。Criteria查询更加灵活,且无需预先编写查询语句。 ```java Criteria criteria = session.createCriteria...

    Hibernate 3.1.2 参考手册

    - **注解**:在Java 5之后,Hibernate支持使用注解来替代XML映射文件,使得代码更加简洁易懂。 **4. 查询语言** - **HQL(Hibernate Query Language)**:类似于SQL的一种面向对象的查询语言。 - **Criteria API...

    hibernate第一天笔记

    `Session`类是与数据库交互的主要接口,类似于JDBC中的`Connection`。它支持CRUD操作,如`save()`用于添加数据,`update()`用于修改数据,`delete()`用于删除数据,而`get()`则根据ID获取对象。值得注意的是,`...

    java 初始Hibernate

    Hibernate通过Session接口提供了一种面向对象的方式来管理和持久化Java类,这些类通常对应于数据库中的表。在这个过程中,开发者甚至不需要直接了解底层数据库的具体结构。 ### 2.1 Hibernate配置文件 Hibernate的...

    Hibernate中文帮助文档

    **标签“hibernate API”**指的是使用Hibernate框架时涉及的API接口和方法,包括SessionFactory的get Session方法,Session的save、update、delete、load、query等操作,以及Transaction的begin、commit和rollback等...

    Java框架hibernate基础教程,简单上手。

    Hibernate不仅适用于Java桌面应用,还能在Servlet/JSP的Web应用中使用,甚至在JavaEE环境中作为数据持久化的解决方案,替代传统的CMP组件。 **二、Hibernate的优势** 1. **简化数据库操作**:Hibernate通过封装JDBC...

    hql批量删除

    需要注意的是,在Hibernate3之后的版本中,Session的connection()方法虽然还存在,但已经被废弃,并不推荐使用。Hibernate提供了替代方案,例如org.hibernate.jdbc.Work接口,它允许直接通过JDBC API来访问数据库。...

    如何实现webwork+spring+hibernate框架结合

    这里我们使用了JPA注解来替代了Hibernate的注解,这在Spring项目中更加常见,因为Spring与JPA有较好的集成支持。 #### 第四步:配置Spring和Hibernate 配置Spring容器来管理Bean的生命周期,同时配置Hibernate以...

Global site tag (gtag.js) - Google Analytics