国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring——Spring事務(wù)的實(shí)現(xiàn)方式及傳播特性

這篇具有很好參考價(jià)值的文章主要介紹了Spring——Spring事務(wù)的實(shí)現(xiàn)方式及傳播特性。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

  • Spring事務(wù)的特性及隔離級(jí)別同事務(wù),詳情請(qǐng)見事務(wù)——什么是事務(wù),事務(wù)的特性,事務(wù)的隔離級(jí)別_醉酒的戈多的博客-CSDN博客

一、Spring事務(wù)的實(shí)現(xiàn)方式及原理

1.實(shí)現(xiàn)方式

在使用Spring框架的時(shí)候,有以下兩種事務(wù)的實(shí)現(xiàn)方式:

  1. 編程式事務(wù):用戶自己通過(guò)代碼來(lái)控制事務(wù)的處理邏輯
  2. 聲明式事務(wù):通過(guò)@Transactional注解來(lái)實(shí)現(xiàn)

?????????事務(wù)的操作本來(lái)應(yīng)該是由數(shù)據(jù)庫(kù)來(lái)進(jìn)行控制,但是為了方便用戶進(jìn)行業(yè)務(wù)邏輯的操作,spring對(duì)事務(wù)功能進(jìn)行了擴(kuò)展實(shí)現(xiàn),一般很少會(huì)用編程式事務(wù),更多的是通過(guò)添加@Transactional注解來(lái)進(jìn)行實(shí)現(xiàn),當(dāng)添加此注解之后事務(wù)的自動(dòng)功能就會(huì)關(guān)閉,有spring框架來(lái)幫助進(jìn)行控制。

2.實(shí)現(xiàn)原理

????????Spring的事務(wù)操作是AOP的一個(gè)核心體現(xiàn),當(dāng)一個(gè)方法添加@Transactional注解之后,spring會(huì)基于這個(gè)類生成一個(gè)代理對(duì)象,會(huì)將這個(gè)代理對(duì)象作為bean,當(dāng)使用這個(gè)代理對(duì)象的方法的時(shí)候,如果有事務(wù)處理,那么會(huì)先把事務(wù)的自動(dòng)提交給關(guān)系,然后去執(zhí)行具體的業(yè)務(wù)邏輯,如果執(zhí)行邏輯沒(méi)有出現(xiàn)異常,那么代理邏輯就會(huì)直接提交,如果出現(xiàn)任何異常情況,那么直接進(jìn)行回滾操作,當(dāng)然用戶可以控制對(duì)哪些異常進(jìn)行回滾操作。

二、Spring事務(wù)的傳播特性

????????當(dāng)使用@Transactional注解實(shí)現(xiàn)事務(wù)時(shí),且多個(gè)事務(wù)方法相互調(diào)用時(shí),事務(wù)如何在這些方法之間進(jìn)行傳播。spring中提供了7中不同的傳播特性,來(lái)保證事務(wù)的正常執(zhí)行。具體使用方式如下:

@Transactional(propagation = Propagation.REQUIRED)
public int saveUser(User user){
    scoreDao.save(**);
    return userDao.save(user);
}

Spring事務(wù)的7中傳播特性:?

  • ? REQUIRED:默認(rèn)的傳播特性,如果當(dāng)前沒(méi)有事務(wù),則新建一個(gè)事務(wù),如果當(dāng)前存在事務(wù),則加入這個(gè)事務(wù)

方法A中調(diào)用方法B,B方法的事務(wù)傳播設(shè)置為PROPAGATION_REQUIRED,則如果A方法上有事務(wù),B就用A的事務(wù),沒(méi)有的話,B就自己新建一個(gè)事務(wù)。

  • ? SUPPORTS:當(dāng)前存在事務(wù),則加入當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù),則以非事務(wù)的方式執(zhí)行

方法A中調(diào)用方法B,B方法的事務(wù)傳播設(shè)置為PROPAGATION_SUPPORTS,則如果A方法上有事務(wù),B就用A的事務(wù),沒(méi)有的話,B就以非事務(wù)方式執(zhí)行。

  • ? MANDATORY:當(dāng)前存在事務(wù),則加入當(dāng)前事務(wù),如果當(dāng)前事務(wù)不存在,則拋出異常

方法A中調(diào)用方法B,B方法的事務(wù)傳播設(shè)置為PROPAGATION_MANDATORY,則要求A方法上有事務(wù),有的話,B用A的事務(wù)。A沒(méi)有的話,就報(bào)錯(cuò)。

  • ? REQUIRED_NEW:創(chuàng)建一個(gè)新事務(wù),如果存在當(dāng)前事務(wù),則掛起該事務(wù)

方法A中調(diào)用方法B,B方法的事務(wù)傳播設(shè)置為PROPAGATION_REQUIRES_NEW,則如果A方法上有事務(wù),則將A方法的事務(wù)掛起,B用自己的事務(wù)。A方法沒(méi)有事務(wù)的話,B自己就新建一個(gè)事務(wù)。

  • ? NOT_SUPPORTED:以非事務(wù)方式執(zhí)行,如果存在當(dāng)前事務(wù),則掛起當(dāng)前事務(wù)

方法A中調(diào)用方法B,B方法的事務(wù)傳播設(shè)置為PROPAGATION_NOT_SUPPORTED,則如果A方法上有事務(wù),則將A方法的事務(wù)掛起(因?yàn)锳、B方法是在同一個(gè)線程中執(zhí)行的)以非事務(wù)方式執(zhí)行,以非事務(wù)方式執(zhí)行。A沒(méi)有事務(wù),就以非事務(wù)方式執(zhí)行。

  • ? NEVER:不使用事務(wù),如果當(dāng)前事務(wù)存在,則拋出異常

方法A中調(diào)用方法B,B方法的事務(wù)傳播設(shè)置為PROPAGATION_NEVER,則要求A方法上不能有事務(wù),有的話,就報(bào)錯(cuò)。A沒(méi)有事務(wù),就以非事務(wù)方式執(zhí)行,B始終是以非事務(wù)方式執(zhí)行。

  • ? NESTED:如果當(dāng)前事務(wù)存在,則在嵌套事務(wù)中執(zhí)行,否則REQUIRED的操作一樣

方法A中調(diào)用方法B,B方法的事務(wù)傳播設(shè)置為PROPAGATION_NESTED,則如果A方法上有事務(wù),則B方法的事務(wù)嵌套在A方法事務(wù)中。A方法沒(méi)有事務(wù)的話,B自己就新建一個(gè)事務(wù)。

?NESTED與REQUIRED和REQUIRED_NEW的區(qū)別如下:

? NESTED和REQUIRED_NEW的區(qū)別:

? REQUIRED_NEW是新建一個(gè)事務(wù)并且新開始的這個(gè)事務(wù)與原有事務(wù)無(wú)關(guān),而NESTED則是當(dāng)前存在事務(wù)時(shí)會(huì)開啟一個(gè)嵌套事務(wù),在NESTED情況下,父事務(wù)回滾時(shí),子事務(wù)也會(huì)回滾,而REQUIRED_NEW情況下,原有事務(wù)回滾,不會(huì)影響新開啟的事務(wù)

? NESTED和REQUIRED的區(qū)別:

? REQUIRED情況下,調(diào)用方存在事務(wù)時(shí),則被調(diào)用方和調(diào)用方使用同一個(gè)事務(wù),那么被調(diào)用方出現(xiàn)異常時(shí),由于共用一個(gè)事務(wù),所以無(wú)論是否catch異常,事務(wù)都會(huì)回滾,而在NESTED情況下,被調(diào)用方發(fā)生異常時(shí),調(diào)用方可以catch其異常,這樣只有子事務(wù)回滾,父事務(wù)不會(huì)回滾。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-649372.html

到了這里,關(guān)于Spring——Spring事務(wù)的實(shí)現(xiàn)方式及傳播特性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring 事務(wù)和事務(wù)傳播機(jī)制

    Spring 事務(wù)和事務(wù)傳播機(jī)制

    目錄 ??今日良言:生命只有一次,你要活的暢快淋漓 ??一、Sping 事務(wù) 1.Spring 中事務(wù)的實(shí)現(xiàn) 2.Spring 中事務(wù)隔離級(jí)別 ??二、Spring 事務(wù)傳播機(jī)制 1.基本概念 2.詳細(xì)介紹 1.Spring 中事務(wù)的實(shí)現(xiàn) 在MySQL中也有事務(wù),如下鏈接是博主之前寫的關(guān)于MySQL事務(wù)的博客: 如何理解數(shù)據(jù)庫(kù)事務(wù)

    2024年02月07日
    瀏覽(22)
  • Spring事務(wù)和事務(wù)傳播機(jī)制(1)

    Spring事務(wù)和事務(wù)傳播機(jī)制(1)

    ??????SSM專欄更新中,各位大佬覺(jué)得寫得不錯(cuò),支持一下,感謝了!?????? Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 在Spring框架中,事務(wù)管理是一種用于維護(hù)數(shù)據(jù)庫(kù)操作的一致性和完整性的機(jī)制。Spring事務(wù)管理提供了靈活的方式來(lái)處理事務(wù),包括事務(wù)的創(chuàng)建

    2024年02月12日
    瀏覽(26)
  • Spring—事務(wù)及事務(wù)的傳播機(jī)制

    Spring—事務(wù)及事務(wù)的傳播機(jī)制

    將一組操作封裝成一個(gè)執(zhí)行單元, 即這一組操作一同成功 / 一同失敗 舉個(gè)栗子?? 未使用事務(wù) 滑稽老哥給女神轉(zhuǎn)賬 520 由于某種原因, 女神并未收到轉(zhuǎn)賬的 520, 而滑稽老哥卻被扣款 520 使用事務(wù) 滑稽老哥給女神轉(zhuǎn)賬 520 由于某種原因, 女神并未收到轉(zhuǎn)賬的 520 因?yàn)槭褂檬聞?wù), 所以

    2024年02月13日
    瀏覽(23)
  • 【Spring】深入理解 Spring 事務(wù)及其傳播機(jī)制

    【Spring】深入理解 Spring 事務(wù)及其傳播機(jī)制

    在 Spring 框架中,事務(wù)(Transaction)是一種用于管理數(shù)據(jù)庫(kù)操作的機(jī)制,旨在 確保數(shù)據(jù)的 一致性、可靠性和完整性 。事務(wù)可以將一組數(shù)據(jù)庫(kù)操作(如插入、更新、刪除等)視為一個(gè)單獨(dú)的執(zhí)行單元,要么 全部成功地執(zhí)行,要么全部回滾 。這樣可以確保數(shù)據(jù)庫(kù)在任何時(shí)候都保

    2024年02月12日
    瀏覽(30)
  • Spring Boot 事務(wù)和事務(wù)傳播機(jī)制

    Spring Boot 事務(wù)和事務(wù)傳播機(jī)制

    事務(wù)定義 將一組操作封裝成一個(gè)執(zhí)行單元 (封裝到一起),這一組的執(zhí)行具備原子性, 那么就要么全部成功,要么全部失敗. 為什么要用事務(wù)? 比如轉(zhuǎn)賬分為兩個(gè)操作: 第一步操作:A 賬戶-100 元。 第二步操作:B賬戶 +100 元。 如果沒(méi)有事務(wù),第一步執(zhí)行成功了,第二步執(zhí)行失敗了,

    2024年02月11日
    瀏覽(25)
  • Spring事務(wù)傳播機(jī)制解析

    在Java的Spring框架中,事務(wù)管理是保證應(yīng)用數(shù)據(jù)一致性和可靠性的關(guān)鍵。Spring提供了靈活的事務(wù)傳播機(jī)制,它定義了事務(wù)邊界,以及在嵌套方法調(diào)用時(shí)如何處理事務(wù)。本文旨在深入探討Spring的事務(wù)傳播行為,幫助開發(fā)者更好地理解和運(yùn)用這一重要特性。 事務(wù)傳播機(jī)制指的是在

    2024年01月16日
    瀏覽(35)
  • spring的事務(wù)傳播機(jī)制

    spring的事務(wù)傳播機(jī)制

    嫌棄內(nèi)容代碼復(fù)雜的可直接看思維導(dǎo)圖大綱即可 指的就是當(dāng)一個(gè)事務(wù)方法被另一個(gè)事務(wù)方法調(diào)用時(shí),這個(gè)事務(wù)方法應(yīng)該如何進(jìn)行 默認(rèn),當(dāng)前存在事務(wù),則加入該事務(wù);不存在事務(wù),創(chuàng)建新事務(wù)。 始終以新的事務(wù)運(yùn)行,當(dāng)前存在事務(wù),則掛起原事務(wù);不存在事務(wù),創(chuàng)建新事務(wù)

    2023年04月23日
    瀏覽(39)
  • Spring事務(wù)傳播機(jī)制

    Spring事務(wù)傳播機(jī)制

    編程式事務(wù)管理:通過(guò)? TransactionTemplate 或者 TransactionManager 手動(dòng)管理事務(wù),實(shí)際應(yīng)用中很少使用,這不是本文的重點(diǎn),就不在這里贅述。 聲明式事務(wù)管理:使用場(chǎng)景最多,也是最推薦使用的方式,直接加上@Transactional注解即可。 @Transactional 注解是用于聲明事務(wù)性方法的注解

    2024年01月16日
    瀏覽(43)
  • 【JavaEE進(jìn)階】Spring事務(wù)和事務(wù)傳播機(jī)制

    【JavaEE進(jìn)階】Spring事務(wù)和事務(wù)傳播機(jī)制

    Spring 事務(wù)是 Spring 框架提供的一種機(jī)制,用于 管理數(shù)據(jù)庫(kù)操作或其他資源的一組相關(guān)操作 ,以確保它們?cè)谝粋€(gè)原子、一致、可靠和隔離的執(zhí)行單元內(nèi)進(jìn)行。事務(wù)用于維護(hù)數(shù)據(jù)的完整性并支持并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)時(shí)的數(shù)據(jù)一致性。 Spring 事務(wù)的主要特點(diǎn)包括: 原子性(Atomicity):

    2024年02月09日
    瀏覽(22)
  • 一文詳解Spring事務(wù)傳播機(jī)制

    一文詳解Spring事務(wù)傳播機(jī)制

    目錄 背景 Spring事務(wù) @Transactional注解 使用場(chǎng)景 失效場(chǎng)景 原理 常用參數(shù) 注意 事務(wù)傳播機(jī)制 處理嵌套事務(wù)流程 主事務(wù)為REQUIRED子事務(wù)為REQUIRED 主事務(wù)為REQUIRED子事務(wù)為REQUIRES_NEW 主事務(wù)為REQUIRED子事務(wù)為NESTED 實(shí)現(xiàn)方式 源碼解析 我們?cè)谑褂肧pring管理數(shù)據(jù)庫(kù)事務(wù)的時(shí)候很方便,只

    2023年04月26日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包