先在这里介绍简单的Spring的事务管理的概念和基础
将在后面详细介绍如何进行环境的搭建和代码的编写以及相应的配置方法
事务的特性:原子性、一致性、隔离性、持久性
原子性:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生
一致性:事务前后数据的完整性必须保持一致
隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间的数据要相互隔离
持久性:一个事务一旦被提交,它对数据库中的数据改变就是永久性的,即使数据库发生故障也不应该对其有任何影响
一. 事务管理器PlatformTransactionManager
1. 打开Spring的API
2. 搜索Interface PlatformTransactionManager(里面有具体的实现类)
3. 根据不同的框架使用不同的平台事务管理器
二. 事务定义信息TransactionDefinition
1. 打开Spring的API
2. 搜索Interface TransactionDefinition
3. ISOLATION(5):隔离级别
(用来解决上述没有隔离性所引发的问题)
PROPAGATION:传播行为
有一些方法来获得一些信息
隔离级别ISOLATION
没有隔离性引发的问题:
脏读(一个事务读取了另一个事务改写了但没有提交的数据,如果这些数据回滚那么将会无效)
不可重复读(一个事务里面读取了另一个事务已经提交的更新的数据,导致多次查询的数据不一致)
幻读(一个事务读取了几行,另一个事务插入了数据,之后查询会出现之前所没有的数据)
事务隔离级别用于解决上述问题
Default是用于底层数据库的隔离级别
Mysql :REPEATABLE_READ (第三个)
Oracle :READ_COMMITTED (第二个)
传播行为PROPAGATION
传播行为用于解决业务层之间的相互调用的问题
第一种(前三个):在同一个事务中
第二种(中间三个):在不同事务中
第三种(最后一个):设置一个保存点
事务状态TransactionStatus
可以记录上述的保存点的状态