框架
spring
控制反转(IoC)和依赖注入(DI)
Spring AOP(面向切面编程)
Spring 事务
本文档使用 MrDoc 发布
-
+
首页
Spring 事务
## 核心概念 | 术语 | 定义 | |-----------------|-------------------------------------------------------------------------------------------| | 事务(Transaction) | 一组数据库操作的逻辑单元,必须满足 ACID 特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 | | 声明式事务 | 通过注解(@Transactional)或 XML 配置实现事务管理,无需手动编码(基于 AOP 实现)。 | | 编程式事务 | 通过 TransactionTemplate 或 PlatformTransactionManager 手动控制事务。 | ## 事务管理方式 * 声明式事务 * 实现原理:基于 AOP 将事务逻辑织入到方法前后。 * 适用场景:大多数业务场景,代码简洁且符合 DRY 原则。 * 关键注解:@Transactional ## @Transactional 核心属性 | 属性 | 作用 | 默认值 | |---------------|------------------------------------------------|----------------------| | propagation | 事务传播行为(如 REQUIRED、REQUIRES_NEW)。 | Propagation.REQUIRED | | isolation | 事务隔离级别(如 READ_COMMITTED)。 | Isolation.DEFAULT | | timeout | 事务超时时间(秒),超过时间自动回滚。 | -1(永不超时) | | readOnly | 是否为只读事务(优化数据库性能)。 | false | | rollbackFor | 指定触发回滚的异常类型(默认仅对 RuntimeException 和 Error 回滚)。 | null | | noRollbackFor | 指定不触发回滚的异常类型。 | null | ## 传播行为(Propagation) | 枚举值 | 描述 | |---------------|-------------------------| | REQUIRED | 默认值。如果存在事务则加入,否则新建一个事务。 | | REQUIRES_NEW | 总是新建事务。如果存在当前事务,挂起当前事务。 | | SUPPORTS | 如果存在事务则加入,否则以非事务方式执行。 | | NOT_SUPPORTED | 以非事务方式执行,如果存在当前事务则挂起。 | | MANDATORY | 必须存在事务,否则抛出异常。 | | NEVER | 总是以非事务方式执行,如果存在事务则抛出异常。 | | NESTED | 在嵌套事务中,内部事务独立回滚,外部事务继续。 | ## 隔离级别(Isolation) | 枚举值 | 描述 | |------------------|----------------------------------| | DEFAULT | 使用数据库默认隔离级别(通常为 READ_COMMITTED)。 | | READ_UNCOMMITTED | 读未提交(可能发生脏读、不可重复读、幻读)。 | | READ_COMMITTED | 读已提交(默认,可避免脏读,但可能不可重复读和幻读)。 | | REPEATABLE_READ | 可重复读(避免脏读和不可重复读,但可能幻读)。 | | SERIALIZABLE | 串行化(最高隔离级别,完全串行执行,性能最低)。 |
admin
2025年3月10日 10:18
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Rancher
Jenkins
ADMIN-UI
VBEN-ADMIN-UI
RUST-FS
MinIO
mindoc
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码