事务管理----------使用jdk动态代理 来实现事务的分离至service层
抽象出service层的接口
public interface IEmpService {
public List<Emp> findAll() throws SQLException;
public void save(Emp emp) throws SQLException;
public void modify(Emp emp) throws SQLException;
public void remove(Integer empno) throws SQLException;
public Emp findEmpByNo(Integer empno) throws SQLException;
public void salChange(Integer srcNo, Integer targetNo);
}
提炼出工具类
public class DBAssits {
// 获取连接
//在当前线程中存储所使用的的连接
private ThreadLocal<Connection> threadLocal = new ThreadLocal<>();
//注入数据源
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public Connection getCurrentConnection() throws SQLException {
Connection conn = threadLocal.get();
if(conn == null ){
conn = dataSource.getConnection();
threadLocal.set(conn);
}
return conn;
}
// 释放连接
public void close(){
threadLocal.remove();
}
}
将事务控制分离
//事务管理类
public class Tranct