1、在Service类上面添加@Transactional,在这个注解里面可以配置事务相关参数
2、propagation:事务传播行为
(1)多事务方法直接进行调用,这个过程中事务是如何进行管理的
Spring框架有7种事务传播行为:
- REQURED:如果add方法本身有事务,调用update方法之后,update使用当前add方法里面事务,如果add方法本身没有事务,调用update方法之后,创建新事务
- REQURED_NEW:使用add方法调用update方法,add方法无论是否有事务,都创建新的事务
前两种行为最重要
@Transactional(propagation = Propagation.REQUIRED)
3、isolation:事务隔离级别
(1)事务有特性成为隔离性,多事务操作之间不会产生影响,不考虑隔离性产生很多问题
(2)有三个读问题:脏读,不可重复读,虚(幻)读
- 脏读:一个未提交事物能读到另一个未提交事物的数据,因为如果数据回滚的话会出现问题
- 不可重复读:一个未提交事物读取到另一个已经提交事物修改的数据。
- 虚读:一个未提交事物读取到另一提交事物添加的数据。
@Transactional(isolation = Isolation.REPEATABLE_READ)
4、timeout:超时时间
(1)事务需要在一定时间内进行提交,如果不提交就会回滚
(2)默认值是-1(不超时),设置时间以秒为单位
@Transactional(timeout = 5)
5、readOnly:是否只读
(1)读:查询操作,写:添加修改删除操作
(2)readOnly默认值false,表示可以查询,可以添加修改删除操作
(3)设置readOnly值是true,设置成true只能查操作,不能修改操作
@Transactional(readOnly = false)
6、rollbackFor:回滚
(1)设置出现哪些异常进行事务回滚
@Transactional(rollbackFor = {ArithmeticException.class})
7、noRollbackFor:不回滚
(2)设置出现哪些异常不进行事务回滚
@Transactional(noRollbackFor = {ArithmeticException.class})