欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

@Transactional注解:多個事務(wù)嵌套時,獨(dú)立事務(wù)處理方式

 更新時間:2022年01月25日 14:54:21   作者:iSetYu  
這篇文章主要介紹了@Transactional注解:多個事務(wù)嵌套時,獨(dú)立事務(wù)處理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@Transactional注解:多事務(wù)嵌套,獨(dú)立事務(wù)處理

看下需求

在多個事務(wù)嵌套使用時,排除事務(wù)之間的回滾影響

解決方案

在不同服務(wù)類的方法中使用Transactional的propagation屬性來實(shí)現(xiàn)隔離事務(wù)。(注意兩個方法不在同一個服務(wù)類中)

Propagation.REQUIRES_NEW即說明該事務(wù)開啟單獨(dú)事務(wù),不受其他事務(wù)影響

// 服務(wù)類A
@Autowired
private ABizService aBizService;
 
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public String insert(FacedbInfoDTO facedbInfoDTO) throws ServiceException {
    ... 
    aBizService.generateId();
} 
 
// 服務(wù)類B
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public String generateId() {
    ...    
}

嵌套事務(wù)分析@Transactional

事務(wù)類型總共有七種;在這就介紹常用的的兩個。 

@Transactional(propagation=Propagation.REQUIRED)//如果有事務(wù),那么加入事務(wù),沒有的話新創(chuàng)建一個;不指定propagation默認(rèn)就是這個
@Transactional(propagation=Propagation.REQUIREDS_NEW)//不管是否存在事務(wù),都創(chuàng)建一個新的事務(wù),原來的掛起,新的執(zhí)行完畢,繼續(xù)執(zhí)行老的事務(wù),

Propagation.REQUIRED類型事務(wù)嵌套

A事務(wù)方法調(diào)用B事務(wù)方法時如果兩個事務(wù)注解在生效的情況下,在這里A事務(wù)稱為父類,B事務(wù)稱為子類;A方法操作數(shù)據(jù)庫后調(diào)用B方法,下列異常拋出時保證AB方法里對數(shù)據(jù)庫操作都完成了才拋出異常;RuleException繼承的RuntimeException;

列舉一下測試結(jié)果:

在這里插入圖片描述

總結(jié):

1.如果子類方法拋出的異常,不管滿足子類還是父類的注解的回滾事務(wù)就會回滾;

2.如果父類拋出異常,只看父類的事務(wù)注解,如果回滾就父子皆回滾,如果不回滾父子皆不回滾

嵌套事務(wù)類型是Propagation.REQUIRES_NEW

這種情況下子事務(wù)開啟了新的session,父事務(wù)先鎖定一條記錄(for update)子事務(wù)也鎖這一條記錄時就會死鎖;這點(diǎn)要注意;

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot中使用JSR-303實(shí)現(xiàn)請求參數(shù)校驗(yàn)

    Spring Boot中使用JSR-303實(shí)現(xiàn)請求參數(shù)校驗(yàn)

    這篇文章主要介紹了Spring Boot中使用JSR-303實(shí)現(xiàn)請求參數(shù)校驗(yàn),JSR-303校驗(yàn)我們一般都是對Java的實(shí)體類對象進(jìn)行校驗(yàn),主要檢驗(yàn)JSR-303是Java中的一個規(guī)范,用于實(shí)現(xiàn)請求參數(shù)校驗(yàn)在我們的實(shí)體類對象的屬性上,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 了解spring中的CloudNetflix Hystrix彈性客戶端

    了解spring中的CloudNetflix Hystrix彈性客戶端

    這篇文章主要介紹了了解spring中的CloudNetflix Hystrix彈性客戶端,客戶端彈性模式是在遠(yuǎn)程服務(wù)發(fā)生錯誤或表現(xiàn)不佳時保護(hù)遠(yuǎn)程資源(另一個微服務(wù)調(diào)用或者數(shù)據(jù)庫查詢)免于崩潰。,需要的朋友可以參考下
    2019-06-06
  • javascript與jsp發(fā)送請求到servlet的幾種方式實(shí)例

    javascript與jsp發(fā)送請求到servlet的幾種方式實(shí)例

    本文分別給出了javascript發(fā)送請求到servlet的5種方式實(shí)例與 jsp發(fā)送請求到servlet的6種方式實(shí)例
    2018-03-03
  • Spring開發(fā)核心之AOP的實(shí)現(xiàn)與切入點(diǎn)持久化

    Spring開發(fā)核心之AOP的實(shí)現(xiàn)與切入點(diǎn)持久化

    面向?qū)ο缶幊淌且环N編程方式,此編程方式的落地需要使用“類”和 “對象”來實(shí)現(xiàn),所以,面向?qū)ο缶幊唐鋵?shí)就是對 “類”和“對象” 的使用,面向切面編程,簡單的說,就是動態(tài)地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程
    2022-10-10
  • java教程之對象序列化使用基礎(chǔ)示例詳解

    java教程之對象序列化使用基礎(chǔ)示例詳解

    所謂對象序列化就是將對象的狀態(tài)轉(zhuǎn)換成字節(jié)流,以后可以通過這些值再生成相同狀態(tài)的對象,下面詳細(xì)介紹一下java對象的序列化使用方法
    2014-01-01
  • mybatis一級緩存和二級緩存的區(qū)別及說明

    mybatis一級緩存和二級緩存的區(qū)別及說明

    這篇文章主要介紹了mybatis一級緩存和二級緩存的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java通過綁定實(shí)現(xiàn)快速將數(shù)據(jù)導(dǎo)出至Excel

    Java通過綁定實(shí)現(xiàn)快速將數(shù)據(jù)導(dǎo)出至Excel

    把數(shù)據(jù)導(dǎo)出至?Excel?是很常見的需求,而數(shù)據(jù)的持久化,往往又放在數(shù)據(jù)庫中,因此把數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到?Excel中,成了非常普遍的一個需求,下面我們就來看看Java如何通過綁定實(shí)現(xiàn)快速將數(shù)據(jù)導(dǎo)出至Excel吧
    2023-10-10
  • Java生成驗(yàn)證碼功能實(shí)例代碼

    Java生成驗(yàn)證碼功能實(shí)例代碼

    頁面上輸入驗(yàn)證碼是比較常見的一個功能,實(shí)現(xiàn)起來也很簡單.給大家寫一個簡單的生成驗(yàn)證碼的示例程序,需要的朋友可以借鑒一下
    2017-05-05
  • Springboot內(nèi)嵌SQLite配置使用詳解

    Springboot內(nèi)嵌SQLite配置使用詳解

    這篇文章主要介紹了Springboot內(nèi)嵌SQLite配置使用詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 使用Spring初始化加載InitializingBean()方法

    使用Spring初始化加載InitializingBean()方法

    這篇文章主要介紹了使用Spring初始化加載InitializingBean()方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論