• 通过TransactionDefinition接口来学习spring事务的隔离级别和传播特性


    public interface TransactionDefinition {
    int PROPAGATION_REQUIRED = 0;  //事务传播级别1:当前如果有事务,Spring就会使用该事务;否则会开始一个新事务;(这也是默认设置和定义)
    int PROPAGATION_REQUIRES_NEW = 3;//事务传播级别4:总是要开启一个新事务。如果当前已经有事务,则将已有事务挂起

    在开发的过程中,用事务最多的方式是通过注解@Transaction来完成的,虽然大多数的业务场景都可以在这一个注解下完成即可。
    但是为了适应某些特别的场景比方说只读方法的优化等,通过对@Transaction来添加参数来完成我们想要的事务传播特性和隔离级别,以及是否只对某些异常类做回滚,是否只读方法等。
    1)使用propagation 指定事务的传播行为,即当前的事务方法被另外一个事务方法调用时如何使用事务。

    默认取值为REQUIRED,即使用调用方法的事务

    REQUIRES_NEW:使用自己的事务,调用的事务方法的事务被挂起。

    2)使用isolation 指定事务的隔离级别,最常用的取值为READ_COMMITTED
    3)默认情况下 Spring 的声明式事务对所有的运行时异常进行回滚,也可以通过对应的属性进行设置。通常情况下,默认值即可。
    4)使用readOnly 指定事务是否为只读。 表示这个事务只读取数据但不更新数据,这样可以帮助数据库引擎优化事务。若真的是一个只读取数据库值得方法,应设置readOnly=true
    5)使用timeOut 指定强制回滚之前事务可以占用的时间。

  • 相关阅读:
    Android动画 interpolator的用法
    ListView的addAll方法
    界面切换动画
    ListView的setSelectionFromTop()方法与setSelection()方法的联系
    new总结
    linux中进程控制
    linux设备模型
    如何将驱动加入内核
    linux缓冲的概念fopen /open,read/write和fread/fwrite区别
    点云的滤波
  • 原文地址:https://www.cnblogs.com/zhuxiang1029/p/15080799.html
Copyright © 2020-2023  润新知