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的缓存中,因此不会占用内存空间。
分享到:
相关推荐
映射文件可以替代注解方式,但在现代应用中,更常见的是使用注解进行映射。 然后,使用SessionFactory创建Session对象,Session是与数据库交互的主要接口。通过Session,我们可以执行CRUD操作(创建、读取、更新、...
1. **保存(Save)**:`session.save()`或`session.persist()`方法用于将新对象插入数据库。 2. **更新(Update)**:`session.update()`用于更新已存在的对象。 3. **删除(Delete)**:`session.delete()`移除...
7. SessionFactory在Hibernate中是线程安全的,负责生成Session实例。 8. Hibernate的默认XML配置文件名为hibernate.cfg.xml。 9. Hibernate不直接处理事务,而是依赖于JDBC或容器提供的事务管理。 10. Spring的...
- Hibernate 从3.0版本开始支持注解配置,可以直接在Java类上标注属性,替代`.hbm.xml`文件。 - 示例: ```java @Entity @Table(name = "entity_table") public class Entity { @Id @GeneratedValue...
- **Session**:相当于 JDBC 中的 Connection,用于执行数据库操作。 - **Transaction**:处理数据库事务。 - **Query**:提供了对 HQL(Hibernate 查询语言)和 Criteria API 的支持,可以替代 Statement 和 ...
在Java的持久层框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它能够帮助开发者将数据库操作与业务逻辑解耦。在实际应用中,为了提高数据库连接的效率和系统的性能,我们通常会使用连接池来管理数据库...
在现代的Hibernate实践中,更倾向于使用注解(Annotations)来替代XML映射。 然后,我们需要一个SessionFactory,它是Hibernate的主要工作单元,负责创建Session。SessionFactory通过读取配置文件和映射信息被初始...
其中,重要的属性包括`hibernate.connection.driver_class`(数据库驱动)、`hibernate.connection.url`(数据库URL)、`hibernate.dialect`(数据库方言)等。 ### 4. 实体类与映射文件 - **实体类**: 是与数据库...
`Session`提供了操作数据库的方法,如查询、插入、更新和删除。 5. **持久化操作**: 在`HiberTest`类中,你可以看到如何创建`Session`,然后进行CRUD操作。例如,添加用户: ```java Session session = ...
7. HQL(Hibernate Query Language)或 Criteria API:这两者是Hibernate提供的查询语言,用于替代SQL,使得数据库查询更加面向对象。 现在,让我们看一个简单的使用流程: 1. 加载配置:程序启动时,首先加载`...
通过ORM,Hibernate简化了Java应用与数据库交互的过程,替代了传统的JDBC编码方式,提供了更为高级的数据库访问API。 #### 二、为什么使用Hibernate? 1. **简化数据库操作**:Hibernate自动处理SQL语句的生成,...
数据库连接的系统配置技术在IT领域中至关重要,尤其是在使用Hibernate框架进行对象关系映射时。Hibernate是一个流行的Java持久层框架,它允许开发人员通过面向对象的方式操作数据库,从而简化了数据库交互。本讲将...
Hibernate提供了一种面向对象的查询方式——Criteria API,可替代传统的HQL(Hibernate Query Language)。Criteria查询更加灵活,且无需预先编写查询语句。 ```java Criteria criteria = session.createCriteria...
- **注解**:在Java 5之后,Hibernate支持使用注解来替代XML映射文件,使得代码更加简洁易懂。 **4. 查询语言** - **HQL(Hibernate Query Language)**:类似于SQL的一种面向对象的查询语言。 - **Criteria API...
`Session`类是与数据库交互的主要接口,类似于JDBC中的`Connection`。它支持CRUD操作,如`save()`用于添加数据,`update()`用于修改数据,`delete()`用于删除数据,而`get()`则根据ID获取对象。值得注意的是,`...
Hibernate通过Session接口提供了一种面向对象的方式来管理和持久化Java类,这些类通常对应于数据库中的表。在这个过程中,开发者甚至不需要直接了解底层数据库的具体结构。 ### 2.1 Hibernate配置文件 Hibernate的...
**标签“hibernate API”**指的是使用Hibernate框架时涉及的API接口和方法,包括SessionFactory的get Session方法,Session的save、update、delete、load、query等操作,以及Transaction的begin、commit和rollback等...
Hibernate不仅适用于Java桌面应用,还能在Servlet/JSP的Web应用中使用,甚至在JavaEE环境中作为数据持久化的解决方案,替代传统的CMP组件。 **二、Hibernate的优势** 1. **简化数据库操作**:Hibernate通过封装JDBC...
需要注意的是,在Hibernate3之后的版本中,Session的connection()方法虽然还存在,但已经被废弃,并不推荐使用。Hibernate提供了替代方案,例如org.hibernate.jdbc.Work接口,它允许直接通过JDBC API来访问数据库。...
这里我们使用了JPA注解来替代了Hibernate的注解,这在Spring项目中更加常见,因为Spring与JPA有较好的集成支持。 #### 第四步:配置Spring和Hibernate 配置Spring容器来管理Bean的生命周期,同时配置Hibernate以...