欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Spring聲明式事務(wù)@Transactional知識點有哪些-創(chuàng)新互聯(lián)

這篇文章主要介紹了Spring聲明式事務(wù)@Transactional知識點有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

目前成都創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、邕寧網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

@Transactional注解支持9個屬性的設(shè)置,這里只講解其中使用較多的三個屬性:readOnly、propagation、isolation。其中propagation屬性用來枚舉事務(wù)的傳播行為,isolation用來設(shè)置事務(wù)隔離級別,readOnly進行讀寫事務(wù)控制。

@Service
@Transactional(readOnly = true)
public class AppTradeRec2Service extends BaseService {
 @Autowired
 private AppTradeRecDao appTradeRecDao;
 @Autowired
 private ConsInfoDao consInfoDao;
 
 @Transactional(readOnly = false)
 public void payCharge(TradeRec tradeRec) {
 User usr = UserUtils.getUser();
 ConsInfo cons = consInfoDao.getByUser(usr.getId());
 //修改交易記錄
 tradeRec.setPayBefore(cons.getAccountAmt());
 tradeRec.setPayAfter(cons.getAccountAmt() - tradeRec.getRcvAmt());
 tradeRec.setIsPay("99");
 appTradeRecDao.save(tradeRec);
 //修改賬戶余額
 cons.setAccountAmt(cons.getAccountAmt() - tradeRec.getRcvAmt());
 consInfoDao.save(cons);
 }
}

一、readOnly讀寫事務(wù)控制

readOnly=true表明所注解的方法或類只是讀取數(shù)據(jù)。

readOnly=false表明所注解的方法或類是增加,刪除,修改數(shù)據(jù)。

二、isolation事務(wù)隔離級別

我們在使用事務(wù)過程中,通常會發(fā)生以下三種情況:

1、臟讀(dirty read):當(dāng)一個事務(wù)讀取另一個事務(wù)尚未提交的修改時,產(chǎn)生臟讀。

2、不可重復(fù)讀(non-repeatable read):同一查詢在同一事務(wù)中多次進行,由于其他提交事務(wù)所做的修改或刪除,每次返回不同的結(jié)果集,此時發(fā)生非重復(fù)讀。

3、幻像讀(phantom read):同一查詢在同一事務(wù)中多次進行,由于其他提交事務(wù)所做的插入操作,每次返回不同的結(jié)果集,此時發(fā)生幻像讀。

針對上述三種情況,Spring提供了5種事務(wù)隔離級別予以解決:

1、DEFAULT默認(rèn)級別

DEFAULT為數(shù)據(jù)源(數(shù)據(jù)庫)的默認(rèn)隔離級別,以目前常用的MySQL為例,默認(rèn)的隔離級別通常為REPEATABLE_READ。

2、READ_UNCOMMITTED未授權(quán)讀取級別

這是最低的隔離級別,一個事務(wù)能讀取到別的事務(wù)未提交的更新數(shù)據(jù),很不安全,可能出現(xiàn)丟失更新、臟讀、不可重復(fù)讀、幻讀。

3、READ_COMMITTED授權(quán)讀取級別

以操作同一行數(shù)據(jù)為前提,讀事務(wù)允許其他讀事務(wù)和寫事務(wù),未提交的寫事務(wù)禁止其他讀事務(wù)和寫事務(wù)。此隔離級別可以防止更新丟失、臟讀,但不能防止不可重復(fù)讀、幻讀。此隔離級別可以通過“瞬間共享讀鎖”和“排他寫鎖”實現(xiàn)。

4、REPEATABLE_READ可重復(fù)讀取級別

保證同一事務(wù)中先后執(zhí)行的多次查詢將返回同一結(jié)果,不受其他事務(wù)影響。以操作同一行數(shù)據(jù)為前提,讀事務(wù)禁止其他寫事務(wù),但允許其他讀事務(wù),未提交的寫事務(wù)禁止其他讀事務(wù)和寫事務(wù)。此隔離級別可以防止更新丟失、臟讀、不可重復(fù)讀,但不能防止幻讀。

5、SERIALIZABLE序列化級別

所有的事務(wù)依次逐個執(zhí)行,這樣事務(wù)之間就完全不可能產(chǎn)生干擾。提供嚴(yán)格的事務(wù)隔離,此隔離級別可以防止更新丟失、臟讀、不可重復(fù)讀、幻讀。如果僅僅通過“行級鎖”是無法實現(xiàn)事務(wù)序列化的,必須通過其他機制保證新插入的數(shù)據(jù)不會被剛執(zhí)行查詢操作的事務(wù)訪問到。

隔離級別越高,越能保證數(shù)據(jù)的完整性和一致性,但是對并發(fā)性能的影響也越大。對于多數(shù)應(yīng)用程序,可以優(yōu)先考慮把數(shù)據(jù)庫系統(tǒng)的隔離級別設(shè)為Read Committed。它能夠避免更新丟失、臟讀,而且具有較好的并發(fā)性能。盡管它會導(dǎo)致不可重復(fù)讀、幻讀這些并發(fā)問題,在可能出現(xiàn)這類問題的個別場合,可以由應(yīng)用程序采用悲觀鎖或樂觀鎖來控制。

三、Propagation事務(wù)傳播行為

Propagation屬性用來枚舉事務(wù)的傳播行為。所謂事務(wù)傳播行為就是多個事務(wù)方法相互調(diào)用時,事務(wù)如何在這些方法間傳播。Spring支持7種事務(wù)傳播行為,默認(rèn)為REQUIRED。

1、REQUIRED

REQUIRED是常用的事務(wù)傳播行為,如果當(dāng)前沒有事務(wù),就新建一個事務(wù),如果已經(jīng)存在一個事務(wù)中,加入到這個事務(wù)中。

2、SUPPORTS

SUPPORTS表示當(dāng)前方法不需要事務(wù)上下文,但是如果存在當(dāng)前事務(wù)的話,那么這個方法會在這個事務(wù)中運行。

3、MANDATORY

MANDATORY表示該方法必須在事務(wù)中運行,如果當(dāng)前事務(wù)不存在,則會拋出一個異常。不會主動開啟一個事務(wù)。

4、REQUIRES_NEW

REQUIRES_NEW表示當(dāng)前方法必須運行在它自己的事務(wù)中。一個新的事務(wù)將被啟動,如果存在當(dāng)前事務(wù),在該方法執(zhí)行期間,當(dāng)前事務(wù)會被掛起(如果一個事務(wù)已經(jīng)存在,則先將這個存在的事務(wù)掛起)。如果使用JTATransactionManager的話,則需要訪問TransactionManager。

5、NOT_SUPPORTED

NOT_SUPPORTED表示該方法不應(yīng)該運行在事務(wù)中,如果存在當(dāng)前事務(wù),在該方法運行期間,當(dāng)前事務(wù)將被掛起。如果使用JTATransactionManager的話,則需要訪問TransactionManager。

6、NEVER

NEVER表示當(dāng)前方法不應(yīng)該運行在事務(wù)上下文中,如果當(dāng)前正有一個事務(wù)在運行,則會拋出異常。

7、NESTED

NESTED表示如果當(dāng)前已經(jīng)存在一個事務(wù),那么該方法將會在嵌套事務(wù)中運行。嵌套的事務(wù)可以獨立于當(dāng)前事務(wù)進行單獨地提交或回滾。如果當(dāng)前事務(wù)不存在,那么其行為與REQUIRED一樣。嵌套事務(wù)一個非常重要的概念就是內(nèi)層事務(wù)依賴于外層事務(wù)。外層事務(wù)失敗時,會回滾內(nèi)層事務(wù)所做的動作。而內(nèi)層事務(wù)操作失敗并不會引起外層事務(wù)的回滾。

綜上所述,NESTED和REQUIRES_NEW非常相似,都是開啟一個屬于它自己的新事務(wù)。使用REQUIRES_NEW時,內(nèi)層事務(wù)與外層事務(wù)就像兩個獨立的事務(wù)一樣,一旦內(nèi)層事務(wù)進行了提交后,外層事務(wù)不能對其進行回滾。當(dāng)內(nèi)部事務(wù)開始執(zhí)行時, 外部事務(wù)將被掛起, 內(nèi)務(wù)事務(wù)結(jié)束時, 外部事務(wù)將繼續(xù)執(zhí)行。兩個事務(wù)互不影響,兩個事務(wù)不是一個真正的嵌套事務(wù),同時它還需要JTA事務(wù)管理器的支持。

使用NESTED時,外層事務(wù)的回滾可以引起內(nèi)層事務(wù)的回滾。而內(nèi)層事務(wù)的異常并不會導(dǎo)致外層事務(wù)的回滾,它是一個真正的嵌套事務(wù)。嵌套事務(wù)開始執(zhí)行時, 它將取得一個 savepoint,如果這個嵌套事務(wù)失敗, 將回滾到此savepoint。潛套事務(wù)是外部事務(wù)的一部分, 只有外部事務(wù)結(jié)束后它才會被提交。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Spring聲明式事務(wù)@Transactional知識點有哪些”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站aaarwkj.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞標(biāo)題:Spring聲明式事務(wù)@Transactional知識點有哪些-創(chuàng)新互聯(lián)
文章路徑:http://aaarwkj.com/article38/dddspp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站維護、軟件開發(fā)、網(wǎng)站內(nèi)鏈、定制開發(fā)、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
日本熟女肥臀一区二区| 天堂av日韩在线播放| 中文字幕四虎在线观看| 欧美一区二区三区久久妇| 搡老女人老91妇女老熟女| 中文字幕久久av一区二区| 久久超碰一区二区三区| 国产一区二区三区不卡视频| 亚洲国产精品自拍视频| 日韩欧美的一区二区三区| 精品国产一区二区三区大| 丰满人妻大屁一区二区| 久久综合热这里只有精品| 欧美日韩亚洲1区2区| 成人国产视频免费观看| 亚洲少妇精品视频在线| 亚洲综合一区二区三区四区在线| 日本免费一区二区三区四区视频| 日韩网激情视频在线观看| 91精品国产高清91久久久久久| 亚洲免费视频区一区二| 欧美一区二区三区va| 国产精品偷伦一区二区| 天天操夜夜骑日日干| 成年人在线免费观看国产| 99久久精品人妻少妇一| 亚洲综合久久五月天| 国产精品亚洲伦理在线| 97在线视频在线播放| 后入视频国产在线观看| 亚洲日本一区二区高清在线| 久久96国产精品久久秘臀| 亚洲成人自拍视频在线观看| 国产黄色片网站在线观看| 成年网站在线91九色| 九九在线精品视频免费| 九九热这里面只有精品| 人人看男人的天堂东京 | 欧美伊香蕉久久综合网99| 日本a亚洲中文字幕永远| 在线国产丝袜自拍观看|