Spring事務簡單操作

什么是事務?

事務是一組操作的集合,是一個不可分割的操作

事務會把所有的操作作為?個整體, ?起向數據庫提交或者是撤銷操作請求. 所以這組操作要么同時

成功, 要么同時失敗.

事務的操作

分為三步:

1. 開啟事start transaction/ begin (?組操作前開啟事務)

2. 提交事務: commit (這組操作全部成功, 提交事務)

3. 回滾事務: rollback (這組操作中間任何?個操作出現異常, 回滾事務)
?

Spring中事務的實現

Spring 中的事務操作分為兩類:

1. 編程式事務(?動寫代碼操作事務)

2. 聲明式事務(利?注解?動開啟和提交事務

聲明式事務

在需要事務的?法上添加 @Transactional 注解就可以實現了. ?需?動開啟事務和提交事務, 進入

?法時?動開啟事務, ?法執?完會?動提交事務, 如果中途發?了沒有處理的異常會?動回滾事務

@Transactional成功?

我們先建立一個數據庫表

當我們插入數據時,帶上@Transactional注解,如果成功就會自動提交,如果錯誤就會回滾

結果如下

這里很明顯,我們的數據已經插入成功了

@Transactional異常

當我們的數據異常的時候,就會觸發回滾

結果如下:

上部分代碼顯示插入成功,但是下面因為有錯誤就造成了回滾,沒有提示有commit

我們查看數據庫表,因為回滾,所以是沒有數據插入的

@Transactional捕獲異常

上述代碼中,如果有錯誤就會產生回滾,導致數據插入不進去,我們可以捕獲異常進行處理的方法,使數據插入成功

結果如下:

可以看到這次數據插入成功了,提示有commit

我們查看數據庫表,發現捕獲異常后就可以使數據插入成功

@Transactional捕獲異常怎么回滾

當我們捕獲異常,數據就會插入成功,但是我們在捕獲異常后,怎么再次回滾呢?

兩個方法:

1、重新拋出異常

當我們捕獲異常后不處理,再次拋一個異常出去后,就會產生回滾

2、手動回滾業務

當我們捕獲異常后,想要產生回滾,我們也可以手動回滾事務

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83981.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83981.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83981.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rust 學習筆記:關于錯誤處理的練習題

Rust 學習筆記:關于錯誤處理的練習題 Rust 學習筆記:關于錯誤處理的練習題想看到回溯,需要把哪個環境變量設置為 1?以下哪一項不是使用 panic 的好理由?以下哪一項最能描述為什么 File::open 返回的是 Result 而不是 O…

MCP 協議傳輸機制大變身:拋棄 SSE,投入 Streamable HTTP 的懷抱

在技術的江湖里,變革的浪潮總是一波接著一波。最近,模型上下文協議(MCP)的傳輸機制就搞出了大動靜,決定和傳統的服務器發送事件(SSE)說拜拜,轉身擁抱 Streamable HTTP,這…

138. Copy List with Random Pointer

目錄 題目描述 方法一、使用哈希表 方法二、不使用哈希表 題目描述 問題的關鍵是,random指針指向的是原鏈表的結點,這個原鏈表的結點對應哪一個新鏈表的結點呢?有兩種辦法。一是用哈希表。另一種是復制原鏈表的每一個結點,并將…

如何評估開源商城小程序源碼的基礎防護能力?

在電商行業快速發展的背景下,開源商城已經為更多企業或者開發者的首選方案,不過并不是所有的開源商城源碼都能讓人放心使用,今天就帶大家一起了解下如何評估開源商城小程序源碼的基礎防護能力,幫助大家更好地篩選安全性高的商城源…

[Vue]跨組件傳值

父子組件傳值 詳情可以看文章 跨組件傳值 Vue 的核?是單向數據流。所以在父子組件間傳值的時候,數據通常是通過屬性從?組件向?組件,??組件通過事件將數據傳遞回?組件。多層嵌套場景?般使?鏈式傳遞的?式實現provideinject的?式適?于需要跨層級…

悠易科技智能體矩陣撬動AI全域營銷新時代

大數據產業創新服務媒體 ——聚焦數據 改變商業 在數字化浪潮與AI技術的雙重驅動下,數據營銷正經歷前所未有的變革,從傳統的全域智能營銷,邁向更具顛覆性的AI全域營銷時代。 麥肯錫的報告顯示,采用AI驅動營銷的企業,客…

Xilinx XCAU10P-2FFVB676I 賽靈思 Artix UltraScale+ FPGA

XCAU10P-2FFVB676I 是 AMD Xilinx 推出的 Artix UltraScale? FPGA 器件,內部集成了約 96,250 邏輯單元,滿足中等規模高性能應用的需求。該芯片采用 16 nm FinFET 制程工藝,核心電壓典型值約 0.85 V,能夠在較低功耗下提供高達 775…

Java SpringBoot 項目中 Redis 存儲 Session 具體實現步驟

目錄 一、添加依賴二、配置 Redis三、配置 RedisTemplate四、創建控制器演示 Session 使用五、啟動應用并測試六、總結 Java 在 Spring Boot 項目中使用 Redis 來存儲 Session,能夠實現 Session 的共享和高可用,特別適用于分布式系統環境。以下是具體的實…

分布式電源的配電網無功優化

分布式電源(Distributed Generation, DG)的大規模接入配電網,改變了傳統單向潮流模式,導致電壓波動、功率因數降低、網損增加等問題,無功優化成為保障配電網安全、經濟、高效運行的關鍵技術。 1. 核心目標 電壓穩定性:抑制DG并網點(PCC)及敏感節點的電壓越限(如超過5%…

JS手寫代碼篇---手寫Promise

4、手寫promise Promise 是一個內置對象,用于處理異步操作。Promise 對象表示一個尚未完成但預期將來會完成的操作。 Promise 的基本結構 一個 Promise 對象通常有以下狀態: pending(進行中):初始狀態,…

我喜歡的vscode幾個插件和主題

主題 Monokaione Monokai Python 語義高光支持 自定義顏色為 self 將 class , def 顏色更改為紅色 為裝飾器修復奇怪的顏色 適用于魔法功能的椂光 Python One Dark 這個主題只在python中效果最好。 我為我個人使用做了這個主題,但任何人都可以使用它。 插件 1.Pylance Pylanc…

【深度學習新浪潮】大模型時代,我們還需要學習傳統機器學習么?

在大模型時代,AI 工程師仍需掌握傳統機器學習知識,這不僅是技術互補的需求,更是應對復雜場景和職業發展的關鍵。以下從必要性和學習路徑兩方面展開分析: 一、傳統機器學習在大模型時代的必要性 技術互補性 大模型(如GPT、BERT)擅長處理復雜語義和生成任務,但在數據量少…

年度工作計劃總結述職報告PPT模版一組分享

工作計劃總結述職報告PPT模版:工作計劃述職報告PPT模版https://pan.quark.cn/s/fba40a5e87da 第一套PPT模版是醫院年度工作計劃的封面頁,有藍橙配色、醫院標題、年度工作計劃的大字、英文副標題、匯報人信息和右上角的醫院logo區域,右側還有醫…

軟件設計師“排序算法”真題考點分析——求三連

一、考點分值占比與趨勢分析 綜合知識題分值統計表 年份考題數量總分值分值占比考察重點2018222.67%時間復雜度/穩定性判斷2019334.00%算法特性對比分析2020222.67%空間復雜度要求2021111.33%算法穩定性判斷2022334.00%綜合特性應用2023222.67%時間復雜度計算2024222.67%分治…

華為云Flexus+DeepSeek征文|基于華為云Flexus云服務的云服務器單機部署Dify-LLM應用開發平臺

目錄 一、前言 二、華為云Flexus云服務優勢 三、華為云Flexus一鍵部署Dify 3.1 選擇模板 3.2 參數配置 3.3 資源棧設置 3.4 配置確認 3.5 創建執行計劃 3.6 部署 四、Dify-LLM應用開發平臺初體驗 4.1 訪問Dify-LLM應用開發平臺 4.2 設置管理員賬戶 4.3 登錄Dify-LLM應用開發平臺…

智能指針RAII

引入:智能指針的意義是什么? RAll是一種利用對象生命周期來控制程序資源(如內存、文件句柄、網絡連接、互斥量等等)的簡單技術。 在對象構造時獲取資源,接著控制對資源的訪問使之在對象的生命周期內始終保持有效&#…

nt!MiRemovePageByColor函數分析之脫鏈和刷新顏色表

第0部分&#xff1a;背景 PFN_NUMBER FASTCALL MiRemoveZeroPage ( IN ULONG Color ) { ASSERT (Color < MmSecondaryColors); Page FreePagesByColor[Color].Flink; if (Page ! MM_EMPTY_LIST) { // // Remove the first entry on the zeroe…

DEBUG:Lombok 失效

DEBUG&#xff1a;Lombok 失效 問題描述 基于 Spring Boot 的項目中&#xff0c;編譯時顯示找不到 log 屬性。查看對應的 class 類&#xff0c;Lombok 正常在編譯時生成 log 屬性。 同時存在另一個問題&#xff0c;使用Getter注解&#xff0c;但實際使用中該注解并沒有生效&…

3D幾何建模引擎3D ACIS Modeler核心功能深度解讀

3D ACIS Modeler是一款由Spatial Corporation&#xff08;現為Dassault Systmes旗下&#xff09;開發的工業級三維幾何建模內核&#xff0c;為CAD/CAM/CAE、建筑、制造、測量及三維動畫等領域提供底層建模能力。本文將從基本定位、核心功能及行業案例三方面&#xff0c;系統介紹…

Flutter - 集成三方庫:數據庫(sqflite)

數據庫 $ flutter pub add sqlite $ flutter pub get$ flutter run運行失敗&#xff0c;看是編譯報錯,打開Xcode工程 ? B 編譯 對比 GSYGithubAppFlutter 的Xcode工程Build Phases > [CP] Embed Pods Frameworks 有sqfite.framework。本地默認的Flutter工程默認未生成Pod…