Spring之@Transactional 注解配置详解

1@Target({ElementType.METHOD, ElementType.TYPE}) 2@Retention(RetentionPolicy.RUNTIME) 3@Inherited 4@Documented 5public @interface Transactional { 6 @AliasFor("transactionManager") 7 String value() default ""; 8 9 @AliasFor("value") 10 String transactionManager() default ""; 11 12 Propagation propagation() default Propagation.REQUIRED; 13 14 Isolation isolation() default Isolation.DEFAULT; 15 16 int timeout() default -1; 17 18 boolean readOnly() default false; 19 20 Class<? extends Throwable>[] rollbackFor() default {}; 21 22 String[] rollbackForClassName() default {}; 23 24 Class<? extends Throwable>[] noRollbackFor() default {}; 25 26 String[] noRollbackForClassName() default {}; 27} 28 29value 和 transactionManager 属性 30它们两个是一样的意思。当配置了多个事务管理器时,可以使用该属性指定选择哪个事务管理器。 31 32propagation 属性 33事务的传播行为,默认值为 Propagation.REQUIRED34 35可选的值有: 36Propagation.REQUIRED :如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。 37Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。 38Propagation.MANDATORY:如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。 39Propagation.REQUIRES_NEW:重新创建一个新的事务,如果当前存在事务,暂停当前的事务。 40Propagation.NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,暂停当前的事务。 41Propagation.NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。 42Propagation.NESTEDPropagation.REQUIRED 效果一样。 43 44isolation 属性 45public enum Isolation { 46 DEFAULT(-1), 47 READ_UNCOMMITTED(1), 48 READ_COMMITTED(2), 49 REPEATABLE_READ(4), 50 SERIALIZABLE(8); 51 52 private final int value; 53 54 private Isolation(int value) { 55 this.value = value; 56 } 57 58 public int value() { 59 return this.value; 60 } 61} 62事务的隔离级别,默认值为 Isolation.DEFAULT 63 64可选的值有: 65Isolation.DEFAULT 66使用底层数据库默认的隔离级别。 67Isolation.READ_UNCOMMITTED Isolation.READ_COMMITTED Isolation.REPEATABLE_READ Isolation.SERIALIZABLE 68 69timeout 属性 70事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。 71 72readOnly 属性 73指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true74 75rollbackFor 属性 76用于指定能够触发事务回滚的异常类型,可以指定多个异常类型。 77 78noRollbackFor 属性 79抛出指定的异常类型,不回滚事务,也可以指定多个异常类型。
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )