分享好友 站长动态首页 网站导航

【Spring】事务和事务传播机制

2022-07-16 07:09 · 头闻号编程技术

文章目录

为什么需要事务

Spring 声明事务

@Transactional(isolation = Isolation.READ_COMMITTED) // 开启事务    @RequestMapping("/insert")    public int insert(){        UserInfo userInfo = new UserInfo();        userInfo.setName("AOP");        userInfo.setPassword("123456");        return userService.add(userInfo);    }    @Transactional(isolation = Isolation.READ_COMMITTED) // 开启事务    @RequestMapping("/insert2")    public int insert2(){        UserInfo userInfo = new UserInfo();        userInfo.setName("AOP");        userInfo.setPassword("123456");        int result = userService.add(userInfo);        System.out.println("MySQL影响的行数"+result);        int num = 10/0;        return result;    }

Transactional参数说明

在这里插入图片描述

propagation

isolation

在这里插入图片描述

timeout

事务回滚失效解决方案

  1. 直接抛出异常
    @Transactional(propagation = Propagation.REQUIRED) // 开启事务    @RequestMapping("/insert2")    public int insert2(){        UserInfo userInfo = new UserInfo();        userInfo.setName("AOP");        userInfo.setPassword("123456");        int result = userService.add(userInfo);        System.out.println("MySQL影响的行数"+result);        try {            int num = 10/0;        }catch (Exception e){            result = 0;            e.printStackTrace();            throw e;//解决事务失效的问题           // TransactionAspectSupport.currentTransactionStatus().setRollbackonly();        }        return result;    }
  1. 在catch中使用代码手动进行事务的回滚操作
      @Transactional(propagation = Propagation.REQUIRED) // 开启事务    @RequestMapping("/insert2")    public int insert2(){        UserInfo userInfo = new UserInfo();        userInfo.setName("AOP");        userInfo.setPassword("123456");        int result = userService.add(userInfo);        System.out.println("MySQL影响的行数"+result);        try {            int num = 10/0;        }catch (Exception e){            result = 0;            e.printStackTrace();            //throw e;//解决事务失效的问题            TransactionAspectSupport.currentTransactionStatus().setRollbackonly();        }        return result;    }

@Transactional工作原理

Spring 事务的传播机制

为什么需要事务传播机制

传播机制的类型

在这里插入图片描述
在这里插入图片描述

嵌套事务和加入事务的区别

————————————————————————
♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声明:本文为CSDN博主「亚太地区百大最帅面孔第101名」的原创文章

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

评论

0

收藏

点赞