Hibernate事务具备全局管理能力,配合Spring框架就可以在BO层完成DAO操作和事务控制。当然,传统的JDBC是不具备这个能力的,所以要自己开发一个连接管理器框架,来管理线程范围内的数据库连接和事务控制。
[java]
package edu.softparty.base.dbunit;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
/**
* 连接管理器类
*/
public class ConnectionManager {
/**
* 空的事务对象
*/
private static final Transaction EMPTY_TRANSACTION = new Transaction() {
public void rollback() throws SQLException {
}
public void commit() throws SQLException {
}
};
/**
* 负责提交和回滚的事务对象
*/
private static final Transaction TRANSACTION = new Transaction() {
public void rollback() throws SQLException {
Connection connection = connectionHolder.get();
if (connection != null) {
if (connection.getAutoCommit() == false) {
connection.rollback();
}
connection.close();
connectionHolder.remove();
}
}
public void commit() throws SQLException {
Connection connection = connectionHolder.get();
if (connection != null) {
if (connection.getAutoCommit() == false) {
connection.commit();
}
connection.close();
connectionHolder.remove();
}
}
};