<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Denis's Java Library

    The only documentation is the code itself

    對(duì)spring事務(wù)類型詳解的一點(diǎn)補(bǔ)充(關(guān)于嵌套事務(wù))

  • PROPAGATION_REQUIRED--支持當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù),就新建一個(gè)事務(wù)。這是最常見(jiàn)的選擇。
  • PROPAGATION_SUPPORTS--支持當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù),就以非事務(wù)方式執(zhí)行。
  • PROPAGATION_MANDATORY--支持當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù),就拋出異常。
  • PROPAGATION_REQUIRES_NEW--新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起。
  • PROPAGATION_NOT_SUPPORTED--以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起。
  • PROPAGATION_NEVER--以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則拋出異常。

    可能大家對(duì)PROPAGATION_NESTED還不怎么了解,覺(jué)得有必要再補(bǔ)充一下^_^!
     PROPAGATION_NESTED: 嵌套事務(wù)類型,是相對(duì)上面提到的六種情況(上面的六種應(yīng)該稱為平面事務(wù)類型),打個(gè)比方我現(xiàn)在有一個(gè)事務(wù)主要有一下幾部分:
    1,從A用戶帳戶里面減去100元錢(qián)
    2,往B用戶帳戶里面添加100元錢(qián)

    這樣看和以前不同的事務(wù)可能沒(méi)有什么區(qū)別,那我現(xiàn)在有點(diǎn)特殊的要求就是,A用戶有3個(gè)帳戶,B用戶有2個(gè)帳戶,現(xiàn)在我的要求就是只要再A用戶的3個(gè)帳戶里面任意一個(gè)減去100元,往B用戶的兩個(gè)帳戶中任意一個(gè)里面增加100元就可以了!

    一旦你有這樣的要求那嵌套事務(wù)類型就非常適合你!我們可以這樣理解,

    一:將“從A用戶帳戶里面減去100元錢(qián)” 和 “往B用戶帳戶里面增加100元錢(qián)”我們暫時(shí)認(rèn)為是一級(jí)事務(wù)操作

    二:將從A用戶的3個(gè)帳戶的任意一個(gè)帳戶里面減錢(qián)看做是“從A用戶帳戶里面減去100元錢(qián)”這個(gè)一級(jí)事務(wù)的子事務(wù)(二級(jí)事務(wù)),同樣把后面存錢(qián)的看成是另一個(gè)的二級(jí)事務(wù)。

    問(wèn)題一:當(dāng)二級(jí)事務(wù)被rollback一級(jí)事務(wù)會(huì)不會(huì)被rollback?

    答案是不會(huì)的,二級(jí)事務(wù)的rollback只針對(duì)自己。

    問(wèn)題二:什么時(shí)候這個(gè)一級(jí)事務(wù)會(huì)commit,什么時(shí)候會(huì)被rollback呢?

    我們主要看二級(jí)里面出現(xiàn)的情況,當(dāng)所有的二級(jí)事務(wù)被commit了并且一級(jí)事務(wù)沒(méi)有失敗的操作,那整個(gè)事務(wù)就算是一個(gè)成功的事務(wù),這種情況整個(gè)事務(wù)會(huì)被commit。

    當(dāng)任意一個(gè)二級(jí)事務(wù)沒(méi)有被commit那整個(gè)事務(wù)就是失敗的,整個(gè)事務(wù)會(huì)被roolback。

    還是拿上面的例子來(lái)說(shuō)明吧!如果我在a的三個(gè)帳戶里面減錢(qián)的操作都被二級(jí)事務(wù)給rollback了,也就是3個(gè)帳戶里面都沒(méi)有減錢(qián)成功,整個(gè)事務(wù)就失敗了就會(huì)被rollback。如果A用戶帳戶三個(gè)帳戶里面有一個(gè)可以扣錢(qián)而且B用戶的兩個(gè)帳戶里面也有一個(gè)帳戶可以增加錢(qián),那整個(gè)事務(wù)就算成功的,會(huì)被 commit。

    看了一下覺(jué)得上面的例子好像不是很深刻,看這個(gè)情況(A用戶的3個(gè)帳戶都是有信用額度的,也就是說(shuō)可以超支,但是超支有金額限制)。不過(guò)原理是一樣的,簡(jiǎn)單點(diǎn)也好說(shuō)明一點(diǎn),祝你好運(yùn)!^_^
  • posted on 2005-12-19 16:02 DenisLing 閱讀(3220) 評(píng)論(5)  編輯  收藏

    評(píng)論

    # re: 對(duì)spring事務(wù)類型詳解的一點(diǎn)補(bǔ)充(關(guān)于嵌套事務(wù)) 2005-12-28 14:08 chunjie

    答案是不會(huì)的,二級(jí)事務(wù)的rollback只針對(duì)自己。
    ------------------------------------------------
    但你下文中也說(shuō)了:二級(jí)事務(wù)的rollback最終會(huì)使整個(gè)事務(wù)rollback啊. 該怎么理解你上面這句話?

      回復(fù)  更多評(píng)論   

    # re: 對(duì)spring事務(wù)類型詳解的一點(diǎn)補(bǔ)充(關(guān)于嵌套事務(wù)) 2005-12-28 14:11 chunjie

    如你的例子, 在兩個(gè)二級(jí)事務(wù)中, 若取錢(qián)的成功了,而在存入的時(shí)候rollback了,這時(shí)整個(gè)transaction會(huì)被rollback,如此,在取錢(qián)這個(gè)二級(jí)的會(huì)被rollback嗎?

    回答若'Y', 這和放在一個(gè)事務(wù)中有啥區(qū)別呢?   回復(fù)  更多評(píng)論   

    # re: 對(duì)spring事務(wù)類型詳解的一點(diǎn)補(bǔ)充(關(guān)于嵌套事務(wù)) 2005-12-28 22:19 DenisLing

    上面的朋友可能沒(méi)有理解我的意思!我的例子可能有點(diǎn)問(wèn)題!
    其實(shí)這有一個(gè)經(jīng)典的旅行定票的問(wèn)題!

    比如我要到臺(tái)灣旅游,我可能要如下去做
    1,買(mǎi)到上海的汽車票,
    2,在上海買(mǎi)去香港的飛機(jī)票,
    3,在香港買(mǎi)去臺(tái)灣的飛機(jī)票,
    4,買(mǎi)到目的旅游地的汽車票。

    ok!現(xiàn)在就討論上面的問(wèn)題,如果把整個(gè)過(guò)程看成是一個(gè)完成的事務(wù),在以前的六種事務(wù)模型里面比如在第4步的時(shí)候沒(méi)有能夠買(mǎi)到到目的旅游地的汽車票,整個(gè)事務(wù)會(huì)回滾。
    但是我們可能在第4步的時(shí)候還可以選擇做地鐵或打的等等。這也就是嵌套事務(wù)類型和上面的不同地方,可以把1,2,3,4分別看成是一個(gè)子事務(wù),比如1的時(shí)候我沒(méi)有買(mǎi)到汽車票,可能我這個(gè)買(mǎi)汽車票的事務(wù)會(huì)回滾,但是這并步影響外面的事務(wù),可們可以選擇做火車等等其它途徑。如果1最后沒(méi)有能夠提交事務(wù),那么總的事務(wù)會(huì)回滾,(但是在1事務(wù)回滾的時(shí)候并不會(huì)導(dǎo)致外層事務(wù)回滾)。其他幾步都是一樣的道理。

    不知道這個(gè)例子是否明白點(diǎn)!有問(wèn)題我們?cè)儆懻摚?nbsp; 回復(fù)  更多評(píng)論   

    # re: 對(duì)spring事務(wù)類型詳解的一點(diǎn)補(bǔ)充(關(guān)于嵌套事務(wù)) 2007-06-29 01:18 javafox

    上面的說(shuō)法完全看不懂 就本人的理解在SRING默認(rèn)的回滾規(guī)則下 在2級(jí)事務(wù)中如果回滾了數(shù)據(jù)但是沒(méi)有拋出異常 1級(jí)事務(wù)還是回繼續(xù)執(zhí)行后面的2級(jí)事務(wù) 如果2級(jí)事務(wù)在回滾過(guò)程中拋出了異常 那么1級(jí)事務(wù)也馬上回滾 但是如果前面的2級(jí)事務(wù)如果已經(jīng)提交了 那么就算后面的2級(jí)事務(wù)回滾并拋出異常也只會(huì)導(dǎo)致1級(jí)事務(wù)回滾 前面已經(jīng)提交的2級(jí)事務(wù)不能回滾了 (因?yàn)榫臀抑赖某绦蚴遣荒芑貪L已經(jīng)提交的 只能通過(guò)數(shù)據(jù)庫(kù)系統(tǒng)日志恢復(fù)了)   回復(fù)  更多評(píng)論   

    # re: 對(duì)spring事務(wù)類型詳解的一點(diǎn)補(bǔ)充(關(guān)于嵌套事務(wù))[未登錄](méi) 2009-05-12 14:35 spring

    @javafox

    你兩說(shuō)的好像是一樣的  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲熟女精品中文字幕| 国产成人亚洲精品电影| 成人免费无码视频在线网站| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 国产精品无码免费播放| 国产精品久久久久久亚洲小说| 中文字幕中韩乱码亚洲大片| 91人成网站色www免费下载| 亚洲欧洲专线一区| 亚洲精品乱码久久久久久按摩 | 国产免费小视频在线观看| 中文字幕免费在线看| tom影院亚洲国产一区二区| 免费真实播放国产乱子伦| 日韩中文字幕免费视频| 337P日本欧洲亚洲大胆艺术图 | 亚洲av永久无码精品漫画| 在线看片v免费观看视频777| 深夜福利在线视频免费| 久久精品国产亚洲AV香蕉| 亚洲国产V高清在线观看| 日本免费网址大全在线观看| 成人av片无码免费天天看| 亚洲人成人伊人成综合网无码| 精品国产综合成人亚洲区| 成全视频在线观看免费高清动漫视频下载 | 亚洲第一成年免费网站| 亚洲国语精品自产拍在线观看| 国产成人免费全部网站| 51在线视频免费观看视频| 又硬又粗又长又爽免费看| 亚洲男人天堂2018av| 亚洲av无码一区二区乱子伦as| 国产大片线上免费看| 国产无人区码卡二卡三卡免费 | h视频免费高清在线观看| 亚洲av无码片区一区二区三区| 日日噜噜噜噜夜夜爽亚洲精品| 免费看美女让人桶尿口| 久久免费看黄a级毛片 | 成人毛片100免费观看|