成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

嵌套事務(wù)及事務(wù)不起作用的問題

Blackjun / 1108人閱讀

摘要:否則事務(wù)不起作用。第二種情況同一個類中方法嵌套方法方法有,方法內(nèi)都沒有,事務(wù)起作用。總結(jié)要想事務(wù)起作用,必須是主方法名上有注解,方法體內(nèi)不能用如果用,則中必須用注解應(yīng)該只被應(yīng)用到方法上,不要用在等方法上,即使用了也將被忽略,不起作用。

代碼方法示例
    @Transactional
    public void saveAA() {
        ????try {
            ????//方法A第一次更新數(shù)據(jù)
            mapper.save();
            //調(diào)用方法B更新數(shù)據(jù)
            this.saveBB();
        ????} catch (Exception e) {
            throw new RuntimeException();
       ???? }   
    }
    @Transactional
    public void saveBB(){
        try {
            //方法B第一次更新數(shù)據(jù)
            mapper.save();
                        
            int i = 100/0;
            //方法B第二次更新數(shù)據(jù)
            mapper.save();  
        } catch (Exception e) {
            //e.printStackTrace();
            throw new RuntimeException();
        }
    }

說明:

?

讓事務(wù)起作用,遇到錯誤進(jìn)行回滾,應(yīng)該注意的事項:

第一種情況:同一個類中 一個方法無嵌套方法

?1、如果方法名上加上@Transactional注解,方法內(nèi)不要用try catch ;如果必須要用try catch ,則catch中必須用throw new RuntimeException()。否則事務(wù)不起作用。

第二種情況:同一個類中 方法A嵌套方法B

1、方法A有@Transactional,方法內(nèi)都沒有try catch,事務(wù)起作用。

2、方法A有@Transactional和try catch,并且catch中用throw new RuntimeException(),事務(wù)起作用。

第三種情況:不同類中,方法C嵌套方法B

1、方法B上加上@Transactional注解,方法內(nèi)不要用try catch ;如果必須要用try catch ,則catch中必須用throw new RuntimeException()。否則方法B的事務(wù)不起作用。

2、方法C上加上@Transactional注解,方法內(nèi)不要用try catch ;如果必須要用try catch ,則catch中必須用throw new RuntimeException(),此時方法B怎么寫都行。否則方法C的事務(wù)不起作用。

?

總結(jié)

1、要想事務(wù)起作用,必須是主方法名上有@Transactional注解,方法體內(nèi)不能用try catch;如果用try catch,則catch中必須用throw new RuntimeException();

2、@Transactional注解應(yīng)該只被應(yīng)用到public方法上,不要用在protected、private等方法上,即使用了也將被忽略,不起作用。這是由Spring AOP決定的。

3、只有來自外部的方法調(diào)用才會唄AOP代理捕捉,類內(nèi)部方法調(diào)用類內(nèi)部的其他方法,子方法并會不引起事務(wù)行為,即使被調(diào)用的方法上使用有@Transactional注解。

4、類內(nèi)部方法調(diào)用內(nèi)部的其他方法,被調(diào)用的方法體中如果有try catch,則catch中必須用throw new RuntimeException(),否則即使主方法上加上@Transactional注解,如果被調(diào)用的子方法出錯也不會拋出異常,不會引起事務(wù)起作用。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74166.html

相關(guān)文章

  • Spring事務(wù)整理

    摘要:使用需要使用作為事務(wù)管理器。兩個事務(wù)互不影響。這是默認(rèn)的隔離級別,使用數(shù)據(jù)庫默認(rèn)的事務(wù)隔離級別下邊的四個與的隔離級別相對應(yīng)這是事務(wù)最低的隔離級別,它充許另外一個事務(wù)可以看到這個事務(wù)未提交的數(shù)據(jù)。這種事務(wù)隔離級別可 Spring事務(wù)整理 工作了幾年了,今天抽時間整理一下spring的事務(wù),說起spring的事務(wù)是面試的時候面試官經(jīng)常提及的問題,接下來結(jié)合網(wǎng)上資料再總結(jié)下spring的事務(wù)...

    stackvoid 評論0 收藏0
  • 可能是最漂亮Spring事務(wù)管理詳解

    摘要:事務(wù)隔離級別定義了一個事務(wù)可能受其他并發(fā)事務(wù)影響的程度我們先來看一下并發(fā)事務(wù)帶來的問題,然后再來介紹一下接口中定義了五個表示隔離級別的常量。 Java面試通關(guān)手冊(Java學(xué)習(xí)指南):https://github.com/Snailclimb/Java_Guide 微信閱讀地址鏈接:可能是最漂亮的Spring事務(wù)管理詳解 事務(wù)概念回顧 什么是事務(wù)? 事務(wù)是邏輯上的一組操作,要么都執(zhí)行,...

    鄒立鵬 評論0 收藏0
  • @Transactional回滾問題(try catch、嵌套

    摘要:事務(wù)嵌套影響首先經(jīng)過實驗,結(jié)論一仍然成立,即,當(dāng)不加上的時候,無論內(nèi)外報,都會回滾無論內(nèi)外報非錯誤,都不會回滾。結(jié)論結(jié)論一對于可以保證錯誤的回滾,如果想保證非錯誤的回滾,需要加上參數(shù)。 Spring 事務(wù)注解 @Transactional 本來可以保證原子性,如果事務(wù)內(nèi)有報錯的話,整個事務(wù)可以保證回滾,但是加上try catch或者事務(wù)嵌套,可能會導(dǎo)致事務(wù)回滾失敗。測試一波。 準(zhǔn)備 建...

    jone5679 評論0 收藏0
  • 關(guān)于MySQL知識點與面試常見問題都在這里

    摘要:但是這將嚴(yán)重影響程序的性能。垂直分區(qū)的優(yōu)點在于可以使得行數(shù)據(jù)變小,在查詢時減少讀取的數(shù),減少次數(shù)。此外,垂直分區(qū)可以簡化表的結(jié)構(gòu),易于維護(hù)。垂直分區(qū)的缺點在于主鍵會出現(xiàn)冗余,需要管理冗余列,并會引起操作,可以通過在應(yīng)用層進(jìn)行來解決。 Java面試通關(guān)手冊(Java學(xué)習(xí)指南,歡迎Star,會一直完善下去,歡迎建議和指導(dǎo)):https://github.com/Snailclimb/Jav...

    LeoHsiun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<