• springboot 事务管理


    添加注解就完事儿了 @Transactional

    1,Propagation  事务的传播行为

    Propagation.REQUIRED  如果存在事务,就加入,没有的话就创建(默认值)
            比如 A 方法调用 B 方法,如果 A 使用了事务,那么 B 方法加入这个事务,结果就是要吗 AB 方法一起提交,要吗都回滚
    Propagation.NOT_SUPPORTED  当前方法不使用事务
    Propagation.REQUIRES_NEW  不管是否存在事务,都创建一个新的事务,原来的先挂起,新的书事务行完毕后再执行原来的事务
    Propagation.MANDATORY  必须在一个已有的事务中执行,否者抛错
    Propagation.NEVER 和 MANDATORY 相反,如果已经存在事务就抛错

    2,Isolation  事务的隔离度,默认值采用 DEFAULT

    Isolation.READ_UNCOMMITTED  读取未提交数据
    Isolation.READ_COMMITTED  读取已提交数据
    Isolation.REPEATABLE_REDA  可重复读
    Isolation.SERIALIZABLE  串型化
    Isolation,DEFAULT  使用数据库默认(Mysql 默认是 REPEATABLE READ)

    3,timeout  事务的超时时间,默认值为 -1(表示永不超时)。如果超时还未完成,则回滚事务。只检测 sql 不检测 java 代码

    4,readOnly  默认为 false(读写均允许),可以设置为 true

    5,rollbackFor  指定能够触发事务回滚的异常类型

    6,noRollbackFor  指定事务异常类型,不回滚事务

    示例:

    // 下面的方法 遇到 RuntimeException 异常就会回滚,遇到 WebServiceException 异常不会回滚,会提交
    @Transactional(rollbackFor=RuntimeException.class, noRollbackFor=WebServiceException.class)
    public string pay(Order order){
    }
    // 下面的方法,如果某条 sql 时间超过5秒,会抛出异常,然后回滚
    @Transactional(timeout=5)
    public string pay(Order order){    
    }

     事务隔离详细解释请看我“Mysql 事务”这篇博客 

  • 相关阅读:
    centos 7下安装mysql 5.7.21
    以多主模式优雅进行MGR复制搭建
    JMeter测试工具
    keepalived故障切换邮件通知
    vim常用快捷键
    mysql高可用之MHA--邮件报警
    Shell脚本实现批量下载资源并保留原始路径
    面试常考题 max pool实现
    Cpp 书籍推荐
    面试常考题 浅谈 赛马问题
  • 原文地址:https://www.cnblogs.com/huanggy/p/9471866.html
Copyright © 2020-2023  润新知