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),描述如下:
()
Deprecated. (scheduled for removal in 4.x). Replacement depends on need; for doing direct JDBC stuff use ; 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的缓存中,因此不会占用内存空间。
相关推荐
7. SessionFactory在Hibernate中是线程安全的,负责生成Session实例。 8. Hibernate的默认XML配置文件名为hibernate.cfg.xml。 9. Hibernate不直接处理事务,而是依赖于JDBC或容器提供的事务管理。 10. Spring的...
4. **查询(Query)**:`session.get()`、`session.load()`、`Query`或`Criteria` API用于查找对象。 ### 七、事务管理 Hibernate支持JTA(Java Transaction API)和JPA(Java Persistence API)的事务管理。通常...
例如,`session.save(user)`用于持久化新对象,`session.get(User.class, userId)`用于获取特定ID的对象,`session.delete(user)`用于删除对象,而`session.createQuery("from User")`则用于执行HQL(Hibernate ...
`Session`类是与数据库交互的主要接口,类似于JDBC中的`Connection`。它支持CRUD操作,如`save()`用于添加数据,`update()`用于修改数据,`delete()`用于删除数据,而`get()`则根据ID获取对象。值得注意的是,`...
其中,重要的属性包括`hibernate.connection.driver_class`(数据库驱动)、`hibernate.connection.url`(数据库URL)、`hibernate.dialect`(数据库方言)等。 ### 4. 实体类与映射文件 - **实体类**: 是与数据库...
- **注解**:在Java 5之后,Hibernate支持使用注解来替代XML映射文件,使得代码更加简洁易懂。 **4. 查询语言** - **HQL(Hibernate Query Language)**:类似于SQL的一种面向对象的查询语言。 - **Criteria API...
**标签“hibernate API”**指的是使用Hibernate框架时涉及的API接口和方法,包括SessionFactory的get Session方法,Session的save、update、delete、load、query等操作,以及Transaction的begin、commit和rollback等...
3. **Session**:是Hibernate与数据库交互的主要接口,相当于JDBC中的Connection。 4. **Transaction**:处理数据库事务,确保数据的一致性。 5. **Entity**:表示业务对象,对应数据库中的表。 6. **Mapping文件...
此外,使用ORM框架如Hibernate,可通过ThreadLocal模式管理Session,确保每个线程有独立的Session,从而避免并发问题。 ### 总结 数据库连接配置是IT项目中的基础但关键环节,无论是Oracle、MySQL还是Access,合理...
- 加载和检索数据:利用Session的get()、load()或find()方法获取对象,或者使用Query/Criteria API执行复杂查询。 6. **缓存机制** - 一级缓存:Session内部的缓存,存储了当前Session中的持久化对象。 - 二级...
这样,Action可以通过继承`ActionSupport`类并调用`getWebApplicationContext()`方法来获取`ApplicationContext`实例,进而访问容器中的Bean。 - **实现步骤**: - 创建继承自`ActionSupport`的Action类。 - 在...
- JDBC应用:`OracleDataSource`负责创建连接,`getConnection()`获取连接。 - DAO应用:`XMLDB_DAOFactory`根据`dbtype`创建不同的`XMLDB`实现类。 - Hibernate的`SessionFactory`根据配置文件创建`Session`。 ...