spring 可以通过多种方式配置事务,如果使用编程式的 hibernate的 TempleTranslate
如果捕获则需要显式回滚,没有捕获,spring将自动处理
一般情况下,我们不需要对service层的异常做什么处理,类似于事务回滚,spring也会帮我们做了。但是一旦我们自己需要catch一些异常,自己做了处理,也是可以的,但是。但是。我们不由得联想到,spring还会捕获到这些异常吗?万一捕获不到,事务回滚就不会执行,就会出现脏数据。。。。。这样的后果,心理感觉很猥琐啊!
而事实就是如此!你会发现,如果你自己捕获了异常,spring的自动事务回滚功
能消失了!
实例2
public void delete(final Integer[]ids)throws Exception{
transactionTemplate.execute(new TransactionCallback(){
//接口方法
public Object doInTransaction(TransactionStatus status) {
try{
//业务逻辑
}
}catch(Exception e){
status.setRollbackOnly();
e.printStackTrace();
}
return null;
}
});