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

Java當(dāng)中讓事務(wù)回滾的幾種方式

 更新時(shí)間:2023年08月07日 09:37:32   作者:冷風(fēng)扇666  
這篇文章主要給大家介紹了關(guān)于Java當(dāng)中讓事務(wù)回滾的幾種方式, 事務(wù)回滾通常用于在某些操作失敗時(shí)取消之前已執(zhí)行的所有操作,這樣,我們就可以保證數(shù)據(jù)的一致性,需要的朋友可以參考下

在 Java 中,可以通過(guò)使用事務(wù)來(lái)保證數(shù)據(jù)庫(kù)操作的一致性和完整性。如果在事務(wù)過(guò)程中發(fā)生了異常或錯(cuò)誤,需要將事務(wù)回滾,以保證數(shù)據(jù)的正確性和完整性。

下面是在 Java 中讓事務(wù)回滾的幾種方式:

使用 Spring 事務(wù)管理:在 Spring 中,可以使用 @Transactional 注解來(lái)標(biāo)記需要進(jìn)行事務(wù)管理的方法,同時(shí)可以設(shè)置 rollbackFor 屬性指定回滾的異常類型。例如:

@Service
@Transactional(rollbackFor = Exception.class)
public class UserService {
    // ...
}

在上述代碼中,@Transactional 注解指定了回滾的異常類型為 Exception,如果在 UserService 中出現(xiàn)了 Exception 類型的異常,就會(huì)回滾事務(wù)。

手動(dòng)回滾事務(wù):如果不使用 Spring 事務(wù)管理,可以手動(dòng)回滾事務(wù)。例如:

Connection conn = dataSource.getConnection();
try {
    conn.setAutoCommit(false);
    // 執(zhí)行數(shù)據(jù)庫(kù)操作
    // 如果出現(xiàn)異常,手動(dòng)回滾事務(wù)
    conn.rollback();
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    conn.setAutoCommit(true);
    conn.close();
}

在上述代碼中,將數(shù)據(jù)庫(kù)連接設(shè)置為手動(dòng)提交模式,并在事務(wù)過(guò)程中根據(jù)需要執(zhí)行數(shù)據(jù)庫(kù)操作。如果出現(xiàn)異常,就手動(dòng)回滾事務(wù)??傊琂ava 中可以使用 Spring 事務(wù)管理或手動(dòng)回滾事務(wù)等方式,來(lái)保證事務(wù)的一致性和完整性,并防止出現(xiàn)異?;蝈e(cuò)誤時(shí)影響數(shù)據(jù)的正確性和完整性。

實(shí)現(xiàn)事務(wù)回滾需要注意的問(wèn)題:

1.@Transactional 注解可以被應(yīng)用于接口定義和接口方法、類定義和類的 public 方法上。

2.@Transactional 注解只能應(yīng)用到 public 可見(jiàn)度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不會(huì)報(bào)錯(cuò),但是這個(gè)被注解的方法將不會(huì)展示已配置的事務(wù)設(shè)置。

3.默認(rèn)情況下,spring會(huì)對(duì)unchecked異常進(jìn)行事務(wù)回滾;如果是checked異常則不回滾。

如果事務(wù)在try{}catch(Exception e){e.printStackTrace();}中跑,并且catch中只是打印e的話,那么事務(wù)不會(huì)rollback。因?yàn)楫惓1籧atch掉了,框架不知道發(fā)生了常。

如果想要rollback,

(1)注解上面寫明異常類型即可,@Transactional(rollbackFor=Exception.class) 

(2)在方法上添加 throws Exception,將方法中出現(xiàn)的異常拋出給spring事務(wù) 

(3)去掉方法體中的try catch 

(4)catch (Exception e) { throw e;}繼續(xù)向上拋,目的是讓spring事務(wù)捕獲這個(gè)異常

除了以上注意的問(wèn)題,說(shuō)一下最近遇到的關(guān)于多數(shù)據(jù)源配置事務(wù)回滾的問(wèn)題

在項(xiàng)目中關(guān)于事務(wù)該配置的也配置了,需要注意的問(wèn)題也注意了,但有的事務(wù)可以出現(xiàn)回滾有的回滾失敗,最終問(wèn)題所在: id相同的事務(wù)配置分別配置在兩個(gè)application.xml文件中,如果多個(gè)application.xml有配置,在web.xml中后加載的application.xml中的事務(wù)配置會(huì)覆蓋最先加的application.xml中的事務(wù)配置。

總結(jié)

到此這篇關(guān)于Java當(dāng)中讓事務(wù)回滾的幾種方式的文章就介紹到這了,更多相關(guān)Java事務(wù)回滾內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringMVC異常處理器編寫及配置

    SpringMVC異常處理器編寫及配置

    這篇文章主要介紹了SpringMVC異常處理器編寫及配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring依賴注入多種類型數(shù)據(jù)的示例代碼

    Spring依賴注入多種類型數(shù)據(jù)的示例代碼

    這篇文章主要介紹了Spring依賴注入多種類型數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 使用SpringBoot集成Thymeleaf和Flying?Saucer實(shí)現(xiàn)PDF導(dǎo)出

    使用SpringBoot集成Thymeleaf和Flying?Saucer實(shí)現(xiàn)PDF導(dǎo)出

    在?Spring?Boot?項(xiàng)目中,生成?PDF?報(bào)表或發(fā)票是常見(jiàn)需求,本文將介紹如何使用?Spring?Boot?集成?Thymeleaf?模板引擎和?Flying?Saucer?實(shí)現(xiàn)?PDF?導(dǎo)出,并提供詳細(xì)的代碼實(shí)現(xiàn)和常見(jiàn)問(wèn)題解決方案,需要的朋友可以參考下
    2024-11-11
  • java使用des加密解密示例分享

    java使用des加密解密示例分享

    java使用des加密解密示例,適合java語(yǔ)言的所有平臺(tái),與.net等平臺(tái)的加密解密兼容
    2014-02-02
  • 如何基于LoadingCache實(shí)現(xiàn)Java本地緩存

    如何基于LoadingCache實(shí)現(xiàn)Java本地緩存

    這篇文章主要介紹了如何基于LoadingCache實(shí)現(xiàn)Java本地緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot之為何推薦使用構(gòu)造器注入

    SpringBoot之為何推薦使用構(gòu)造器注入

    這篇文章主要介紹了SpringBoot之為何推薦使用構(gòu)造器注入問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java中的LinkedHashSet和TreeSet解讀

    Java中的LinkedHashSet和TreeSet解讀

    這篇文章主要介紹了Java中的LinkedHashSet和TreeSet解讀,哈希表和鏈表實(shí)現(xiàn)的set接口哈希表決定了它元素是唯一的,而鏈表則保證了他是有序的(存儲(chǔ)和取出順序一致),元素按照一定規(guī)則排序,不是按儲(chǔ)存時(shí)間排的,需要的朋友可以參考下
    2023-09-09
  • Spring Security 自動(dòng)踢掉前一個(gè)登錄用戶的實(shí)現(xiàn)代碼

    Spring Security 自動(dòng)踢掉前一個(gè)登錄用戶的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Spring Security 自動(dòng)踢掉前一個(gè)登錄用戶的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Spring Boot多模塊化后,服務(wù)間調(diào)用的坑及解決

    Spring Boot多模塊化后,服務(wù)間調(diào)用的坑及解決

    這篇文章主要介紹了Spring Boot多模塊化后,服務(wù)間調(diào)用的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java 線程創(chuàng)建方式全過(guò)程

    Java 線程創(chuàng)建方式全過(guò)程

    本文介紹了繼承Thread類、實(shí)現(xiàn)Runnable接口和Callable接口創(chuàng)建線程的方法,以及線程池的使用理邏輯和任務(wù)處理機(jī)制,并重點(diǎn)講解了線程池參數(shù)配置、常用阻塞隊(duì)列和拒絕策略、線程池的優(yōu)勢(shì)和應(yīng)用場(chǎng)景、虛擬線程的特點(diǎn)和創(chuàng)建方法、ScheduledThreadPool線程池原理和使用方法
    2026-05-05

最新評(píng)論

衡山县| 富源县| 昭觉县| 右玉县| 龙江县| 西盟| 若尔盖县| 郸城县| 连云港市| 迁西县| 桦南县| 青海省| 克山县| 大渡口区| 左权县| 哈尔滨市| 金乡县| 忻州市| 阿鲁科尔沁旗| 金门县| 怀远县| 额尔古纳市| 皮山县| 民勤县| 太原市| 彩票| 叶城县| 博湖县| 浏阳市| 绍兴县| 通辽市| 呈贡县| 苏州市| 龙山县| 怀安县| 北流市| 新沂市| 贡嘎县| 金湖县| 光山县| 黄山市|