springboot2.x如何添加事务

Easter79
• 阅读 428
什么时候需要添加事务呢?一般情况下,如果该方法有两条SQL语句或者以上都需要添加(个人感觉:)).

首先需要在我们的启动类加上

@EnableTransactionManagement //开启事务管理接着我们在需要添加事务的方法上加上

@Transactional(propagation = Propagation.REQUIRED)参数是规定我们的事务传播行为,一般是用required和support这两种行为,如果是增/删/改的话一般是用require,查的话一般是用support.如果对事务的传播行为不太了解或者记不清了可以看看下面

Propagation

Required 需要 如果存在一个事务,则支持当前事务。如果没有事务则开启

Supports 支持 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行

Mandatory 必要的 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。

required_new 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。

Not_support 总是非事务地执行,并挂起任何存在的事务。

Never 绝不 总是非事务地执行,如果存在一个活动事务,则抛出异常

Nested 嵌套的 如果有就嵌套、没有就开启事务

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
spring事物管理之传播行为和隔离级别
大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅。事物注解方式:@Transactional当标于类前时,表示类中所有方法都进行事物处理例子:@TransactionalpublicclassTestServiceBeanimplementsTest
Easter79 Easter79
3年前
springboot+mybatis 使用事务
一、一些概念声明式的事务管理是基于AOP的,在springboot中可以通过@Transactional注解的方式获得支持,这种方式的优点是:1)非侵入式,业务逻辑不受事务管理代码的污染。2)方法级别的事务回滚,合理划分方法的粒度可以做到符合各种业务场景的事务管理。本文使用目前最常用的mybatis框架来配置springboot的事务
Wesley13 Wesley13
3年前
@Transactional 回滚不生效原因
事务的管理方式有两种,第一种是编程式事务管理,需要将数据库的自动提交等取消,并且需要自己编写事务代码,第二种则是声明式事务管理模式,spring利用springAOP特性编写了注解即题目中所提到的方式来管理事务,避免开发人员编写大量的事务代码。一、特性先来了解一下@Transactional注解的特性吧,可以更好排查问题1\.service类
Wesley13 Wesley13
3年前
@Transactional注解失效的解决方案
一、前言  开发中我们经常使用@Transactional注解来启用Spring事务管理,但是如果使用方法不当,会遇到注解不生效该事务回滚的地方却没有回滚的问题。总结下一般是以下几个原因:1.@Transactional注解只能应用到public可见度的方法上。如果应用在protected、private或者p
Stella981 Stella981
3年前
Spring boot method interceptor
概述需要对某些service方法添加日志和监控报警.找了好长时间,添加过程如下:1.编写@LogAndWarn注解2.编写拦截器LogAndWarnInterceptor3.编写切入点配置LogAndWarnAdviser4.在对应Service类或方法加上@LogAndWarn注解
Wesley13 Wesley13
3年前
JDBC对事务的使用(包括自动提交,回滚等知识)
首先得清楚什么时候使用事务。当你需要一次执行多条SQL语句时,可以使用事务。通俗一点说,就是,如果这几条SQL语句全部执行成功,则才对数据库进行一次更新,如果有一条SQL语句执行失败,则这几条SQL语句全部不进行执行,这个时候需要用到事务。其次才是事务的具体使用。1.获取对数据库的连接(代码这里省略了吧,网上太多了,对各种数据库
Stella981 Stella981
3年前
Macos mysql 8.0.11 添加配置文件
mac安装mysql后,没有配置文件,如果需要添加配置文件,需要在/etc目录下面添加my.cnf文件。添加方法打开文件命令:sudovi /etc/my.cnf文件添加内容:\client\defaultcharactersetutf8\mysqld\charactersetserveru
Stella981 Stella981
3年前
Python Day24:类的继承、派生、覆盖、super()、绑定、非绑定方法
类的继承、派生、覆盖、super()python类的继承:子类继承父类,只需要在定义类的时候在类名后面加上(父类名)。继承之后,父类的属性方法、子类都可以访问派生:子类继承父类后,自己在父类的基础上,又添加了一些属于自己特性的属性、方法
Easter79 Easter79
3年前
Springboot入门之分布式事务管理
springboot默认集成事务,只主要在方法上加上@Transactional即可。分布式事务一种情况是针对多数据源,解决方案这里使用springbootjtaatomikos来解决一、pom文件<groupIdcn.iponkan</groupId   <artifactIdspringbootjsp</artifactI
Wesley13 Wesley13
3年前
Spring声明式事务注解@Transactional
spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k