1.事务的定义
事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序 执行逻辑单元(Unit)。事务具有四个特征(ACID),分别是原子性(Atomicity )、一致性(Consistency )、隔离性(Isolation) 和持久性(Durability),简称为事务的ACID特性。
原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency):事务执行前后数据的完整性必须保持一致。比如在转账事务操作中,事务执行前后金额的总数应保持不变。
隔离性(Isolation):事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。
2.springboot中事务的使用步骤
2.1.在需要使用事务的类 、接口、或者方法上添加@Transactional注解
2.2.默认是在出现运行时异常时回滚事务,如果需要指定异常来回滚事务,可以通过rollbackFor属性来指定异常类。例如:
@Transactional(rollbackFor = Exception.class) 表示所有的异常都进行回滚。
3.可以在yml配置文件中开启事务管理日志,查询操作的事务日志记录。
#spring事务管理日志
logging:
level:
org.springframework.jdbc.support.JdbcTransactionManager: debug
/***
* 根据id删除部门
* @param id
*/
@Transactional(rollbackFor = Exception.class) //spring事务管理
@Override
public void delete(Integer id) {
deptMapper.deleteById(id); //根据id删除部门 数据
int i = 1 / 0; //模拟异常
empMapper.deleteByDeptId(id); //删除该部门下的所有员工数据
}
这样Spring Boot事务就实现了,不需要其他配置。
注:SpringBoot项目会自动配置一个DataSourceTransactionManager,所以我们只需在方法(或者类)加上@Transactional注解,就自动纳入Spring的事务管理了。
3、事务的传播行为:
Propagtion:指的就是当一个事务方法被另外一个事务方法调用时,这个事务方法应该如何进行事务控制。