Oct 14

spring 事务的回滚注意问题

admin , 02:17 , 脚本JQuery » 编程(Java-Spring) , 评论(0) , 引用(0) , 阅读(2479) , Via 本站原创 | |
搜索
我已经获得阿里云幸运券,准备分享给您。请点击获取  

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;
            }
           
        });