spring事务隔离级别
时间: 2024-04-19 12:17:22 浏览: 72
Spring框架中定义了五种事务隔离级别,分别为:
1. DEFAULT(默认):采用数据库默认的隔离级别,MySQL默认为REPEATABLE READ,Oracle默认为READ COMMITTED。
2. READ_UNCOMMITTED(读未提交):事务可以读取未被提交的数据,可能会读取到其他事务还未提交的脏数据,存在非常严重的幻读问题,一般不使用。
3. READ_COMMITTED(读已提交):事务只能读取已经提交的数据,可以避免脏读问题,但是仍然存在不可重复读和幻读问题。
4. REPEATABLE_READ(可重复读):事务执行期间多次读取同一数据,会保证每次读取到的都是同一个版本的数据,避免了不可重复读问题,但是仍然存在幻读问题。
5. SERIALIZABLE(序列化):最高隔离级别,完全串行化事务,所有事务按照顺序一个一个执行,可以避免所有的并发问题,但是会带来非常大的性能开销,一般情况下不使用。
在配置Spring事务时,可以通过设置@Transactional注解的isolation属性或者在配置文件中设置transaction-isolation属性来指定事务隔离级别。例如:
```
@Transactional(isolation = Isolation.READ_COMMITTED)
public void doSomething() {
// do something
}
```
或者
```
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
<property name="defaultTransactionIsolation" value="2" />
</bean>
```
阅读全文