1、在Service类上面添加@Transactional,在这个注解里面可以配置事务相关参数

image.png

2、propagation:事务传播行为

(1)多事务方法直接进行调用,这个过程中事务是如何进行管理的
image.png
Spring框架有7种事务传播行为:

  • REQURED:如果add方法本身有事务,调用update方法之后,update使用当前add方法里面事务,如果add方法本身没有事务,调用update方法之后,创建新事务
  • REQURED_NEW:使用add方法调用update方法,add方法无论是否有事务,都创建新的事务

前两种行为最重要
image.png

  1. @Transactional(propagation = Propagation.REQUIRED)

3、isolation:事务隔离级别

(1)事务有特性成为隔离性,多事务操作之间不会产生影响,不考虑隔离性产生很多问题
(2)有三个读问题:脏读,不可重复读,虚(幻)读

  • 脏读:一个未提交事物能读到另一个未提交事物的数据,因为如果数据回滚的话会出现问题
  • 不可重复读:一个未提交事物读取到另一个已经提交事物修改的数据。
  • 虚读:一个未提交事物读取到另一提交事物添加的数据。

image.png

  1. @Transactional(isolation = Isolation.REPEATABLE_READ)

4、timeout:超时时间

(1)事务需要在一定时间内进行提交,如果不提交就会回滚
(2)默认值是-1(不超时),设置时间以秒为单位

  1. @Transactional(timeout = 5)

5、readOnly:是否只读

(1)读:查询操作,写:添加修改删除操作
(2)readOnly默认值false,表示可以查询,可以添加修改删除操作
(3)设置readOnly值是true,设置成true只能查操作,不能修改操作

  1. @Transactional(readOnly = false)

6、rollbackFor:回滚

(1)设置出现哪些异常进行事务回滚

  1. @Transactional(rollbackFor = {ArithmeticException.class})

7、noRollbackFor:不回滚

(2)设置出现哪些异常不进行事务回滚

  1. @Transactional(noRollbackFor = {ArithmeticException.class})