public class xxxService(){ service中不应该出现connection,它只应该在dao中出现
private xxxDao dao = new xxxDao();
public void serviceMethod(){
Connextion con = null;
try{
con=JdbcUtils.getConnection();
con.setAutoCommitted(false);
dao.daoMethod1(con,....);
dao.daoMethod2(con,....);
con.commint();
}catch(Exception e){
try{
if(con!=null) con.rollback();
}catch(Exception e){}
}finally{
try{
con.close();
}catch(Exception e){}
}
}
}
我们希望可以这样来处理事务
public class xxxService(){
private XXXDao dao = new XXXDao();
public void serviceMethod(){
try{
JdbcUtils.beginTransaction(); //为con赋值,它不再为null
dao.daoMethod1(...); //内部会调用JdbcUtils.getConnection(),如果con不为null,那么返回的是con,多次调用dao方法,返回的是同一个Connection
dao.daoMethod2(...);
JdbcUtils.commitTransaction();//调用con.commit()
}catch(Exception e){
JdbcUtils.rollbackTransaction();//调用con.rollback()
}
}
}