spring事务的概述

spring提供了三个接口PlatformTransactionManagerTransactionDefinitionTransactionStatus

 

PlatformTransactionManager

这是一个顶层接口,长这样。

 

TransactionDefinition

在TransactionDefinition中定义了大量的常量,最重要的应该是传播性和隔离性

isolation隔离

事务的四个特性 ACID  原子性 一致性 隔离性 持久性。

不考虑事务隔离性有什么问题?

         脏读,不可重复读 虚读。

ISOLATION_DEFUALT 它使用后端数据库的默认隔离级别(spring中选项)

ISOLATION_READ_UNCOMMITTED 不能解决问题,会发生脏读 不可重复读 虚读

ISOLATION_READ_COMMITTED 可以解决脏读 会产生不可重复读与虚读。

ISOLATION_REPEATABLE_READ 可以解决脏读,不可重复读 解决不了虚读

ISOLATION_SERIALIZABLE 串行化,可以解决所有问题

对于不现的数据库,它的底层默认事务隔离级别不一样。

Oracle数据库它默认的是read_committed

Mysql数据库它默认的是repeatable_read.

 

propagation传播行为

它解决的是两个被事务管理的方法互相调用问题。它与数据库没关系,是程序内部维护的问题。

以下定义了事务的传播行为

以上操作中最常用的三种:

PROPAGATION_REQUIRED 默认值 两个操作处于同一个事务,如果之前没有事务,新建一个事务

PROPAGATION_REQUIRES_NEW

两个操作处于不同的事务

PROPAGATION_NESTED
它是一种嵌套事务,它是使用SavePoint来实现的。事务回滚时可以回滚到指定的savepoint,注意:它只对DataSourceTransactionManager有作用

以下了解

PROPAGATION_SUPPORTS 支持当前事务,如果不存在,就不使用事务

PROPAGATION_MANDATORY 支持当前事务,如果不存在,抛出异常

PROPAGATION_NOT_SUPPORTED 以非事务运行,如果有事务存在,挂起当前事务

PROPAGATION_NEVER 以非事务运行,如果有事务存在,抛出异常

这里有事务传播行为的解释

 

TransactionStatus

它定义了事务状态信息,在事务运行过程中,得到某个时间点的状态

就这么简单介绍下吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值