ThreadLocal可以将一系列数据库操作集中提交,也可以减轻系统负担,避免建立不必要的数据库连接发生。
下面是建一个简单的事务工具类:
public class JDBCUtil {
private static ThreadLocal<Connection> threadLocal = new ThreadLocal<>();
public static Connection getConnection() throws Exception {
Connection conn = threadLocal.get();
//如果是第一次,就创建一个连接
if (conn == null) {
conn = DataSourceUtil.getDataSourceDbcpFactory().getConnection();
threadLocal.set(conn);
}
return conn;
}
//开启事务
public static void beginTransaction() throws Exception {
Connection conn = getConnection();
conn.setAutoCommit(false);//关闭自动提交------开启事务
}
//提交事务
public static void commitTransaction() throws Exception {
Connection conn = getConnection();
if(conn != null)
conn.commit();
}
//回滚事务
public static void roolbackTransaction() throws Exception {
Connection conn = getConnection();
if(conn != null)
conn.rollback();
}
public static void closeTransaction() throws Exception {
Connection conn = getConnection();
if(conn != null)
conn.close();
threadLocal.remove();
}
}