JAVA应用】 事务的传播机制是什么?有那几种?

2020-09-04 15:43发布

6条回答
糖包啊肉包
2021-06-28 15:29

1.首先来说什么是事务:

  事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败)。

  数据库向用户提供保存当前程序状态的方法,叫事务提交(commit;当事务执行过程中,使数据库忽略当前的状态并回到前面保存的状态的方法叫事务回滚(rollback

2.事务的传播机制

  以spring的事务传播机制为例子:

  Spring事务机制主要包括声明式事务编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考。

  Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性。

spring在TransactionDefinition接口中定义了七个事务传播行为:


    • propagation_requierd:如果当前没有事务,就新建一个事务,如果已存在一个事务中,加入到这个事务中,这是最常见的选择。

    • propagation_supports:支持当前事务,如果没有当前事务,就以非事务方法执行。

    • propagation_mandatory:使用当前事务,如果没有当前事务,就抛出异常。

    • propagation_required_new:新建事务,如果当前存在事务,把当前事务挂起。

    • propagation_not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

    • propagation_never:以非事务方式执行操作,如果当前事务存在则抛出异常。

    • propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作

一周热门 更多>