亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

Blackjun / 1137人閱讀

摘要:否則事務(wù)不起作用。第二種情況同一個(gè)類中方法嵌套方法方法有,方法內(nèi)都沒有,事務(wù)起作用??偨Y(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ù)起作用,遇到錯(cuò)誤進(jìn)行回滾,應(yīng)該注意的事項(xiàng):

第一種情況:同一個(gè)類中 一個(gè)方法無嵌套方法

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

第二種情況:同一個(gè)類中 方法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(),此時(shí)方法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)用才會(huì)唄AOP代理捕捉,類內(nèi)部方法調(diào)用類內(nèi)部的其他方法,子方法并會(huì)不引起事務(wù)行為,即使被調(diào)用的方法上使用有@Transactional注解。

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

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

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

相關(guān)文章

  • Spring事務(wù)整理

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

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

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

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

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

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

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

    LeoHsiun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<