Spring 事务的隔离级别(Isolation Level)是为了解决在并发事务执行时可能出现的各种数据一致性问题(如脏读、不可重复读、幻读)。 需要强调的是,Spring 并不直接实现事务隔离级别,而是将其委托给底层的数据库去实现。Spring 的 枚举类中定义了 5 种隔离级别(包含 4 种标准数据库隔离级别 + 1 个 Spring 特有默认级别)。 在详细介绍隔离级别之前,我们需要先了解并发事务会引发的 3 种常见问题: 1. 脏读(Dirty Read): 事务 A 读取了事务 B 尚未提交的数据。如果事务 B 回滚,事务 A 读取到的就是无效数据。 2. 不可重复读(Non-Repeatable Read): 事务 A 多次读取同一条记录,在此期间事务 B 修改(Update/Delete)并提交了该记录,导致事务 A 多次读取的结果不一致。 3. 幻读(Phantom Read): 事务 A 按照某个条件多次查询数据,在此期间事务 B 插入(Insert)了符合该条件的新记录并提交,导致事务 A 后来查询时多出了“幻影”一样的记录。 --- Spring 的 5 ...