@Transactional有哪些参数
时间: 2024-06-05 09:05:46 浏览: 102
Spring源码学习十二:@Transactional是如何工作的1
@Transactional是Spring框架中的一个注解,用于在方法级别控制事务管理。它提供了对事务的一些基本设置,例如隔离级别、传播行为、 rollback-only 等。以下是一些主要的@Transactional参数:
1. `isolation` (默认值:`ISOLATION_DEFAULT`): 设置事务的隔离级别,可能的值包括:
- `ISOLATION_DEFAULT`: 使用数据库默认的隔离级别。
- `ISOLATION_READ_UNCOMMITTED`: 最低隔离级别,读取未提交数据。
- `ISOLATION_READ_COMMITTED`: 可靠但较慢,读取已提交的数据。
- `ISOLATION_REPEATABLE_READ`: 提供更强一致性,但可能出现幻读。
- `ISOLATION_SERIALIZABLE`: 最强的隔离级别,可防止脏读、幻读和不可重复读。
2. `propagation` (默认值:`Propagation REQUIRED`): 事务的传播行为,有多个选项:
- `Propagation_REQUIRED`: 如果当前没有活动事务,新建一个;如果有活动事务,则加入该事务。
- `Propagation_SUPPORTS`: 不影响当前事务,以非事务方式运行。
- `Propagation_MANDATORY`: 必须在事务中运行,如果当前没有事务则抛异常。
- `Propagation_REQUIRES_NEW`: 新建事务,即使当前有事务也会将其挂起。
- `Propagation_NESTED`: 如果在事务内,嵌套事务;否则新建事务。
- `Propagation_NOT_SUPPORTED`: 在非事务上下文中运行,抛出异常。
- `Propagation_NEVER`: 永远不进行事务,无论当前是否有事务。
3. `readOnly` (默认值:`false`): 设置是否为只读事务。如果为true,事务在提交前不会修改持久化数据。
4. `rollbackOnCommitFailure` (默认值:`false`): 如果在事务开始或提交阶段遇到异常,是否回滚事务。若设置为true,即使有其他部分的代码成功执行,也会在commit时回滚。
5. `noRollbackFor`: 可选,一组异常类型列表,表示当这些异常发生时,不会自动回滚事务。
6. `timeout` (单位:秒,默认值:数据库配置或无): 设置事务超时时间。
阅读全文