Spring事务管理

数据库事务必须具备ACID特性,即Atomic(原子性),Consistency(一致性),Isolation(隔离性)和Durability(持久性)。
对于开发人员来说,并不需要了解数据库事务的底层细节,只需要通过数据库系统提供的接口,就可以按照业务需求来控制事务。

Spring提供了强大而简便的事务处理功能,核心就是PlatformTransactionManager抽象接口。
Spring将所有事务管理都抽象为 PlatformTransactionManager、TransactoinStatus和TransactionDefinition这三个接口。

PlatformTransactionManager定义了事务管理,所有与事务相关的操作都由PlatformTransactionManager管理;

TransactionStatus定义了事务状态,PlatformTransactionManager会根据TransactionStatus的状态来决定是否回滚事务。

TransactionDefinition定义了事务的隔离级别和传播行为,在启动事务时,PlatformTransactionManager根据TransactionDefinition来启动合适的事务。

事务的隔离级别是由底层的数据库系统实现的。
事务的传播行为则是应用程序自己管理的,他决定了 事务 如何在应用程序中传播,一般是由底层框架来完成。

Spring支持如下的事务传播行为:
词汇:
propagation  [,prɒpә'geiʃәn] n.  增殖, 繁殖, 宣传  [医] 传播, 繁殖, 持续培养
mandatory  ['mændәtәri] a.  命令的, 托管的  [经] 受托者, 命令者

(1)PROPAGATION_REQUIRED :Spring的默认的事务传播行为。必须在事务内执行,如果当前存在事务就加入当前事务,         如果 当前没有事务,就创建一个新的事务。

(2)PROPAGATION_SUPPORTS:支持当前的事务,如果当前没有事务,可以以非事务方式执行。

(3)PROPAGATION_MANDATORY :必须在当前事务内执行,如果当前没有事务,就直接抛出异常。

(4)PROPAGATION_REQUIRES_NEW:总是新建一个事务,如果当前存在事务,就把当前事务挂起,直到新事务执行完毕

(5)PROPAGATION_NOT_SUPPORTED:不能在事务环境下执行,如果当前存在事务,就把当前事务挂起。

(6)PROPAGATION_NEVER:不能在事务环境下执行,如果当前存在事务,就直接抛出异常。

(7)PROPAGATION_NESTED:必须在事务内执行,如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则执行与
          PROPAGATION_REQUIRED类似的操作,就是创建一个新的事务。

使用编程式事务管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值