博客
关于我
Spring事务的7种传播属性
阅读量:576 次
发布时间:2019-03-11

本文共 910 字,大约阅读时间需要 3 分钟。

Spring事务管理在TransactionDefinition接口中定义了7种事务传播行为,用于规范事务方法在不同嵌套调用场景下的传播规则。这些传播行为主要用于描述在已存在一个事务上下文的情况下,如何处理事务方法的调用。

事务传播行为的定义决定了在启动当前事务之前(如果有的话),现有的上下文如何处理新的事务性操作。这一机制尤其重要,因为它允许开发人员灵活地控制事务的传播方式,从而实现对数据一致性的维护。

以下是Spring定义的7中事务传播行为的说明:

  • REQUIRED(部分支持事务传播):默认的事务传播模式。如果没有现有事务,上下文,都会创建一个新的事务。如果已经有一个天然的事务,上下文,则执行当前操作,连接到该事务。

  • REQUIRES_NEW(新建独立的事务):如果没有现有事务,上下文,就会创建一个完全独立的事务。如果已经有一个事务,上下文,执行的方法调用会暂停该现有事务,创建一个新的事务来执行。

  • NESTED(嵌套事务):如果没有现有事务,上下文,就会创建一个新的事务作为嵌套事务来处理当前事务。嵌套事务将共享父事务的隔离度,允许对父事务中的数据进行更新操作。

  • SUPPORTS(支持当前事务):如果没有现有事务,上下文,则直接以非事务的方式执行。如果已经有一个事务,上下文,执行的方法会被调度到该事务的上下文中,不会创建新的事务。

  • NOT_SUPPORTED(不支持事务传播):如果没有现有事务,上下文,就直接以非事务方式执行。如果已经有一个事务,上下文,执行过程中会将当前事务挂起,确保不会有任何后果性的数据一致性问题。

  • NEVER(从不支持事务传播):无论是否有现有事务,上下文,都会以非事务方式执行。如果已经有一个事务,上下文,执行过程中会直接抛出一个异常,确保不会进行任何可能破坏数据一致性的操作。

  • MANDATORY(强制事务传播):如果没有现有事务,上下文,就会抛出异常来强制要求必须存在一个现有的事务上下文。只有在已经有一个事务上下文的情况下,才会继续执行当前操作,并使用该事务上下文进行处理。

  • 这些事务传播行为为开发者提供了高度的灵活性,能够根据具体的业务需求选择最适合的传播规则。

    转载地址:http://emnvz.baihongyu.com/

    你可能感兴趣的文章
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    Python和RF编写web自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>
    Python命名中尾随下划线有什么好处?
    查看>>
    Python启动脚本
    查看>>
    Python听写汇总结果
    查看>>