SpringBoot事务处理

事务的使用

  • 在springboot中给需要添加事务的方法添加,@Transactional注解

@Transactional中各参数记录

isolation(事务的隔离级别):
int ISOLATION_DEFAULT = -1;//默认的隔离级别,使用当前数据库的隔离级别。会是后面四种隔离级别的其中一种
int ISOLATION_READ_UNCOMMITTED = 1;//读未提交;
int ISOLATION_READ_COMMITTED = 2; //读已提交;
int ISOLATION_REPEATABLE_READ = 4; //重复读;
int ISOLATION_SERIALIZABLE = 8; //串行化

**注意在MySQL中默认的事务的隔离级别是ISOLATION_REPEATABLE_READ **

propagation()
int PROPAGATION_REQUIRED = 0;//如果当前上下文中的已经存在一个事务,就使用当前的事务;如果当前没有事务就创建一个新的事务
int PROPAGATION_SUPPORTS = 1;//如果当前上下文中的已经存在一个事务,就使用当前的事务;如果当前没有事务也不会开启一个新事务,以非事务的方式执行
int PROPAGATION_MANDATORY = 2;//如果当前上下文中的已经存在一个事务,就使用当前的事务;如果当前没有事务就抛出异常
int PROPAGATION_REQUIRES_NEW = 3;//如果当前上下文中的已经存在一个事务,就暂停该事务;创建一个新的事务开始执行。完成后恢复之前挂起的事务
int PROPAGATION_NOT_SUPPORTED = 4;//不支持事务,如果当前上下文中已经存在一个事务,就挂起事务;已非事务的方式执行
int PROPAGATION_NEVER = 5;//不支持事务,如果当前上下文中已经存在一个事务,就抛出异常
int PROPAGATION_NESTED = 6;//如果当前上下文中已经存在事务,就开启一个嵌套的事务。简单来说就是不管当前上下文中是否存在事务,本次都会创建一个事务

默认使用第一级别

其他参数

  • timeout:设置延迟参数,如果超过延迟时间,自动回滚事务
  • rollbackFor:设置需要回滚的异常
  • norollbackFor:当遇到某个异常时不需要回滚

其他的注意事项

  • 事务只在碰到runtime异常(运行时异常)与error异常时才会回滚事务
  • 如果在代码块中使用try catch则无法自动回滚异常,需要手动提交异常
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值