# 🔄 事务管理

声明式事务 - @Transactional

### 📚 ACID 特性

#### A

Atomicity

原子性

事务是不可分割的工作单位

#### C

Consistency

一致性

数据库状态保持一致

#### I

Isolation

隔离性

事务之间相互隔离

#### D

Durability

持久性

提交后永久保存

### 🚀 传播行为 (Propagation)

#### REQUIRED (默认)

有事务则加入，无则新建

最常用，适合大多数业务方法

#### REQUIRES_NEW

总是新建事务，挂起当前事务

适合日志记录、独立子任务

#### SUPPORTS

有事务则加入，无则以非事务运行

适合查询方法

#### NOT_SUPPORTED

以非事务运行，挂起当前事务

不需要事务的操作

#### MANDATORY

必须在事务中运行，否则抛异常

强制要求事务

#### NEVER

不能在事务中运行，否则抛异常

确保无事务

### 🔒 隔离级别 (Isolation)

级别 | 脏读 | 不可重复读 | 幻读 | 说明
--- | --- | --- | --- | ---
READ_UNCOMMITTED | ❌ | ❌ | ❌ | 读未提交，性能最高
READ_COMMITTED | ✅ | ❌ | ❌ | 读已提交，Oracle默认
REPEATABLE_READ | ✅ | ✅ | ❌ | 可重复读，MySQL默认
SERIALIZABLE | ✅ | ✅ | ✅ | 串行化，性能最低

✅ = 防止该问题 | ❌ = 可能出现该问题

### 🧪 事务回滚演示

创建订单时触发异常，观察事务回滚效果