最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?@Transactional指定回滾條件

 更新時間:2022年08月09日 11:39:06   作者:梁云亮???????  
這篇文章主要介紹了Java?@Transactional指定回滾條件,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

異常分類

  • 可查的異常(checked exceptions):Exception下除了RuntimeException外的異常
  • 不可查的異常(unchecked exceptions):RuntimeException及其子類和錯誤(Error)

@Transactional注解屬性詳解

屬性類型描述
valueString可選的限定描述符,指定使用的事務(wù)管理器
propagationenum: Propagation可選的事務(wù)傳播行為設(shè)置
isolationenum: Isolation可選的事務(wù)隔離級別設(shè)置
readOnlyboolean讀寫或只讀事務(wù),默認讀寫
timeoutint (in seconds granularity)事務(wù)超時時間設(shè)置
rollbackForClass對象數(shù)組,必須繼承自Throwable導(dǎo)致事務(wù)回滾的異常類數(shù)組
rollbackForClassName類名數(shù)組,必須繼承自Throwable導(dǎo)致事務(wù)回滾的異常類名字數(shù)組
noRollbackForClass對象數(shù)組,必須繼承自Throwable不會導(dǎo)致事務(wù)回滾的異常類數(shù)組
noRollbackForClassName類名數(shù)組,必須繼承自Throwable不會導(dǎo)致事務(wù)回滾的異常類名字數(shù)

@Transactional

使用@Transaction注解時,阿里巴巴代碼規(guī)范插件會提醒需要指定rollbackFor以顯示的rollback

默認情況下,Spring框架在使用@Transaction處理事務(wù)時默認只在拋出運行時異常unchecked exceptions時才會事務(wù)回滾。也就是說,當拋出個RuntimeException 或其子類例的實例時,從事務(wù)方法中拋出的Checked exceptions將不被標識進行事務(wù)回滾。

  • 讓checked異?;貪L:在整個方法前加上 @Transactional(rollbackOn=Exception.class)
  • 讓unchecked異常不回滾: @Transactional(dontRollbackOn=RunTimeException.class)
  • 不需要事務(wù)管理的(只查詢的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)

注意

  • 如果異常被try-catch了,事務(wù)就不會回滾,如果想讓事務(wù)回滾必須再往外拋try{}catch{throw Exception}。
  • Spring團隊的建議在具體的類(或類的方法)上使用 @Transactional 注解,而不要使用在類所要實現(xiàn)的任何接口上。也可以在接口上使用 @Transactional 注解,但是這種情況需要設(shè)置基于接口的代理時才生效
  • @Transactional 注解標識的方法,建議處理過程盡量的簡單。尤其是帶鎖的事務(wù)方法,能不放在事務(wù)里面的最好不要放在事務(wù)里面??梢詫⒊R?guī)的數(shù)據(jù)庫查詢操作放在事務(wù)前面進行,而將增、刪、改等操作放在事務(wù)中

代碼

@Slf4j
@Service
public class MemberService {

? ? @Autowired
? ? private MemberMapper memberMapper;

? ? @Transactional
? ? public Integer insert(MemberEntity memberEntity) {
? ? ? ? Integer insertResult = 0;
? ? ? ? try {
? ? ? ? ? ? insertResult = memberMapper.save(memberEntity);
? ? ? ? ? ? log.info("insertResult:{}", insertResult);
? ? ? ? ? ? int result = 1 / memberEntity.getAge();
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? log.error("errorMsg:{}", e.getMessage());
? ? ? ? ? ? //回滾
? ? ? ? ? ? TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
? ? ? ? }
? ? ? ? return insertResult;
? ? }
}

如上標紅代碼,如果不寫的話,事務(wù)是不會回滾的。因為事務(wù)被 catch 捕獲到了,所以只能手動的進行事務(wù)回滾。

到此這篇關(guān)于Java @Transactional指定回滾條件的文章就介紹到這了,更多相關(guān)Java @Transactional內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot?+rabbitmq+redis實現(xiàn)秒殺示例

    springboot?+rabbitmq+redis實現(xiàn)秒殺示例

    本文主要介紹了springboot?+rabbitmq+redis實現(xiàn)秒殺示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java?在游戲中探索數(shù)組二維數(shù)組

    Java?在游戲中探索數(shù)組二維數(shù)組

    數(shù)組和二維數(shù)組感覺用王者榮耀的裝備欄來舉例解釋,應(yīng)該更易懂一些。從基礎(chǔ)開始講,后續(xù)會講到JAVA高級,中間會穿插面試題和項目實戰(zhàn),希望能給大家?guī)韼椭?/div> 2022-03-03
  • SpringBoot緩存預(yù)熱實戰(zhàn)

    SpringBoot緩存預(yù)熱實戰(zhàn)

    緩存預(yù)熱是一種常見的優(yōu)化策略,旨在提高系統(tǒng)的響應(yīng)速度和性能,本文主要介紹了SpringBoot緩存預(yù)熱實戰(zhàn)指南,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • Java實現(xiàn)本地緩存的方式匯總

    Java實現(xiàn)本地緩存的方式匯總

    引入緩存,主要用于實現(xiàn)系統(tǒng)的高性能,高并發(fā),這篇文章主要介紹了Java實現(xiàn)本地緩存的幾種方式,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Springcloud-nacos實現(xiàn)配置和注冊中心的方法

    Springcloud-nacos實現(xiàn)配置和注冊中心的方法

    這篇文章主要介紹了Springcloud-nacos實現(xiàn)配置和注冊中心的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Java中保證多線程間的數(shù)據(jù)共享的方法詳解

    Java中保證多線程間的數(shù)據(jù)共享的方法詳解

    這篇文章詳解的發(fā)給大家介紹了Java中是如何保證多線程間的數(shù)據(jù)共享的,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • java中的基礎(chǔ)運算符

    java中的基礎(chǔ)運算符

    這篇文章主要介紹了Java基本數(shù)據(jù)類型和運算符,結(jié)合實例形式詳細分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運算符、邏輯運算符等相關(guān)原理與操作技巧,需要的朋友可以參考下
    2021-08-08
  • 解讀JDK1.8?默認使用什么垃圾收集器

    解讀JDK1.8?默認使用什么垃圾收集器

    這篇文章主要介紹了解讀JDK1.8?默認使用什么垃圾收集器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Mybatis?如何開啟控制臺打印sql語句

    Mybatis?如何開啟控制臺打印sql語句

    這篇文章主要介紹了Mybatis?如何開啟控制臺打印sql語句問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程

    Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程

    這篇文章主要介紹了Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程,Thread類包含諸多操作線程的方法,非常重要,需要的朋友可以參考下
    2015-12-12

最新評論

兴城市| 五大连池市| 民和| 原平市| 景宁| 和顺县| 武安市| 土默特右旗| 侯马市| 绥棱县| 梨树县| 陇西县| 文水县| 临安市| 孝昌县| 揭西县| 信宜市| 宣恩县| 荆州市| 岳阳县| 永丰县| 新田县| 泸水县| 绥江县| 平江县| 杭锦旗| 麻栗坡县| 巴南区| 永年县| 尼木县| 本溪市| 吴堡县| 安乡县| 乌鲁木齐县| 屏东市| 永顺县| 四川省| 当涂县| 鄱阳县| 托克逊县| 建宁县|