日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Spring中的事務管理

作者:Qiddo 更新時間: 2023-12-11 編程語言

事務四個屬性ACID

  • 原子性(atomicity)

    事務是原子性操作,由一系列動作組成,事務的原子性確保動作要么全部完成,要么完全不起作用
  • 一致性(consistency)

    一旦所有事務動作完成,事務就要被提交。數據和資源處于一種滿足業務規則的一致性狀態中
  • 隔離性(isolation)

    可能多個事務會同時處理相同的數據,因此每個事務都應該與其他事務隔離開來,防止數據損壞
  • 持久性(durability)

    事務一旦完成,無論系統發生什么錯誤,結果都不會受到影響。通常情況下,事務的結果被寫到持久化存儲器中

代碼?

來看下面這一串代碼

    <!--結合AOP實現事務的植入-->
    <!--配置事務的類-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <!--給哪些方法配置事務-->
        <!--配置事務的傳播特性:new propagation= -->
        <tx:attributes>
            <tx:method name="add" propagation="REQUIRED"/>
            <tx:method name="delete" propagation="REQUIRED"/>
            <tx:method name="update" propagation="REQUIRED"/>
            <tx:method name="query" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <!--配置事務切入-->
    <aop:config>
        <aop:pointcut id="txPointCut" expression="execution(* com.qi.mapper.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    </aop:config>

?可以發現里面使用了配置事務(<tx:method?name="add"?propagation="REQUIRED"/>)

解釋這種事務傳播行為就是多個事務方法相互調用時,事務如何在這些方法間傳播。

spring支持7種事務傳播行為

  • propagation_requierd:如果當前沒有事務,就新建一個事務,如果已存在一個事務中,加入到這個事務中,這是最常見的選擇(默認就是這種選擇)

  • propagation_supports:支持當前事務,如果沒有當前事務,就以非事務方法執行。

  • propagation_mandatory:使用當前事務,如果沒有當前事務,就拋出異常。

  • propagation_required_new:新建事務,如果當前存在事務,把當前事務掛起。

  • propagation_not_supported:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

  • propagation_never:以非事務方式執行操作,如果當前事務存在則拋出異常。

  • propagation_nested:如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作

?總結:事務在項目開發過程非常重要,因為這涉及到數據的一致性的問題

原文鏈接:https://blog.csdn.net/m0_73944607/article/details/134775173

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新