1、在service类上面添加注解@Transactional,在这个注解里面可以配置事务相关参数
2、propagation:事务传播行为
(1)多事务方法直接进行调用,这个过程中事务是如何进行管理的
@Service
@Transactional(propagation = Propagation.REQUIRED)
public class TransferService {
}
3、ioslation:事务隔离级别
(1)事务有一个特性 被称为隔离性,多事务操作之间不会产生影响。
不考虑隔离性产生很多问题
(2)有三个读问题:脏读、不可重复读、虚(幻)读
(3)脏读:一个未提交事务 读取到 令一个未提交事务的数据(不能发生-严重问题)
(4)不可重复读:一个未提交事务读取到另一已提交事务修改数据(一种现象-尽量避免)
(5)虚读:一个未提交事务读取到另一 已提交事务添加数据
(6)解决:通过设置事务隔离级别,解决读问题
设置
@Service
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.READ_COMMITTED)
public class TransferService {
}
mysql默认:可重复读
4、timeout:超时时间
(1)事务需要在一定时间内进行提交,如果不提交进行回滚
(2)默认值是-1,设置时间以秒单位进行计算
5、readOnly:是否只读
(1)读:查询操作,写:添加修改删除操作
(2)readOnly默认值false,表示可以查询,可以添加修改删除操作
(3)设置readOnly值是true,设置成true之后,只能查询
@Service
@Transactional(readOnly = true,propagation = Propagation.REQUIRED,isolation = Isolation.READ_COMMITTED)
public class TransferService {
}
6、rollbackFor:回滚
(1)设置出现哪些异常进行事务回滚
7、noRollbackFor:不回滚
(1)设置出现哪些异常不进行事务回滚