springboot有哪些事务类型?
时间: 2023-07-04 20:13:37 浏览: 109
springboot-transaction事务
在 Spring Boot 中,可以使用以下几种事务类型:
1. **PROPAGATION_REQUIRED**:如果当前没有事务,则创建一个新的事务。如果当前已经有事务,则加入到当前事务中。
2. **PROPAGATION_SUPPORTS**:如果当前有事务,则加入到当前事务中执行。如果当前没有事务,则以非事务的方式执行。
3. **PROPAGATION_MANDATORY**:如果当前有事务,则加入到当前事务中执行。如果当前没有事务,则抛出异常。
4. **PROPAGATION_REQUIRES_NEW**:无论当前是否有事务,都会创建一个新的事务。如果当前已经有事务,则挂起当前事务。
5. **PROPAGATION_NOT_SUPPORTED**:以非事务的方式执行。如果当前有事务,则挂起当前事务。
6. **PROPAGATION_NEVER**:以非事务的方式执行。如果当前有事务,则抛出异常。
7. **PROPAGATION_NESTED**:如果当前有事务,则嵌套在当前事务中执行。如果当前没有事务,则创建一个新的事务。
除了事务类型,还可以使用 `isolation` 属性来设置事务隔离级别,以及 `readOnly` 属性来设置事务是否只读。例如:
```java
@Transactional(propagation = Propagation.REQUIRED,
isolation = Isolation.READ_COMMITTED,
readOnly = false)
public void saveUser(User user) {
userRepository.save(user);
}
```
需要注意的是,事务类型和属性的选择应该根据具体的业务情况而定。最好根据实际情况进行测试和调整。
阅读全文