spring对事务的支持,事务的传播机制

对于事务,这是数据库一种重要的资源,对于这种资源的开销是很大的。spring支持了aop(面向切面编程),所以事务是和核心的代码无关的事情,所以可以使用aop来解决事务。这我们就不讲了,我们用标签来讲。

  1. @transactional是事务的标签,标识在一个类上,说明该类的所有的方法都使用事务。标识在方法上,标识该方法是开启事务。建议是使用在方法上。
  2. @transactional只有标识在public方法上才有效。对于事务方法,一般都是其他的方法来调用,这就要求必须可以在包外调用。如果是protected,private,默认都不会生效。
  3. 同一个类调用事务方法会失效,比如Test类,a方法没开启事务,b方法开启了事务,a内调用了b方法,调用a方法,b方法的事务是不会生效的。

Transactional标签的属性,propagation,only-read, isolation

Propagation是执行方法与事务之间的关系。有7种关系。

  1. REQUIRE(默认):必须有事务,如果当前有事务,则在该事务环境下执行,如果没开启事务,就会创建一个新的事务,在该事务环境下执行。
  2. RRQURIEDNEW:不管有没有事务,都会开启一个事务,并在新的事务下执行。
  3. SUPPOR:支持事务,如果有事务,就在该事务环境下执行,没有事务,就不会在事务环境下执行。
  4. NOTSUPPORT:不支持事务,如果在事务环境下,就把挂起该事务,如果没开启事务,就正常执行。
  5. NEVER:如果有事务,就会异常,如果没有事务,正常执行。
  6. MANDATORY:必须嵌套在一个事务,如果有事务,则嵌套事务,如果没有事务,就会报出异常
  7. NEWTED:如果有事务就嵌套在一个事务里,如果没有事务按照REQIRE来执行。

only-read:表示该方法对数据库只有读事件。

isolation:表示该方法采用哪种隔离级别。ISOLATION_DEFAULT(采用数据库默认的事务隔离级别),ISOLATION_READ_UNCOMMITTED(读未提交),ISOLATION_READ_COMMIT(读已提交),ISOLATION_REPEATABLE_READ(可重复读),ISOLATION_SERIALIEABLE(序列化)。

timeout:时间限制。还要一个回滚的,基本spring对于事务的支持就这些。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值