什么是事务?它有哪些属性?
时间: 2024-02-03 10:50:03 浏览: 16
事务(Transaction)是指数据库中执行的一个操作序列,这个操作序列中的所有操作要么全部成功执行,要么全部不执行。事务具有以下四个属性:
1. 原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部失败回滚,不允许部分执行成功部分失败。
2. 一致性(Consistency):事务执行前后,数据库的完整性约束没有被破坏。
3. 隔离性(Isolation):事务的执行不受其他事务的干扰,即并发执行的事务之间不会相互影响。
4. 持久性(Durability):事务一旦提交,其所做的修改将永久保存在数据库中,即使系统出现故障也不会丢失。
这四个属性通常被称为ACID属性,是保证事务正确执行的基本要素。
相关问题
springboot有哪些事务类型?
在 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);
}
```
需要注意的是,事务类型和属性的选择应该根据具体的业务情况而定。最好根据实际情况进行测试和调整。
事务型数据流的特征是什么?
事务型数据流的特征是具有 ACID 属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。其中,原子性指一个事务中包含的所有操作要么全部完成,要么全部不完成;一致性指事务执行前后,数据在逻辑上应该保持一致;隔离性指在并发环境下,各个事务之间是相互隔离的,不会相互干扰;持久性指事务完成后,对数据所做的修改会被永久保存到数据库中。