Savepoint savepoint=null;保存点,记录操作位置,之后可以回滚到指定位置
try{
//获得链接
conn=。。。。
//开启事务
conn.setAutoCommit(false);
A事务
B事务
savepoint=conn.setpoint();
C事务
D事务
//提交事务
conn.commit(); 在一个事务里面,即使CD异常,AB也能保存提交!
}catch(){
if(savepoint!=null){//CD异常
//回滚到CD之前
conn.rollback(savepoint);
//提交AB
conn.commit();
}else{//AB异常
//回滚AB
conn.rollback();}
}