Java?SpringBoot?中的操作事務(wù)
前言:
在 Spring Boot 中操作事務(wù)有兩種方式:編程式事務(wù)或聲明式事務(wù),接下來(lái)我們一起來(lái)看二者的具體實(shí)現(xiàn)。
1.編程式事務(wù)
在 Spring Boot 中實(shí)現(xiàn)編程式事務(wù)又有兩種實(shí)現(xiàn)方法:
- 使用 TransactionTemplate 對(duì)象實(shí)現(xiàn)編程式事務(wù);
- 使用更加底層的 TransactionManager 對(duì)象實(shí)現(xiàn)編程式事務(wù)。
它們的具體實(shí)現(xiàn)代碼如下。
1.1 TransactionTemplate 使用
要使用 TransactionTemplate 對(duì)象需要先將 TransactionTemplate 注入到當(dāng)前類中 ,然后再使用它提供的 execute 方法執(zhí)行事務(wù)并返回相應(yīng)的執(zhí)行結(jié)果,如果程序在執(zhí)行途中出現(xiàn)了異常,那么就可以使用代碼手動(dòng)回滾事務(wù),
具體實(shí)現(xiàn)代碼如下:
1.2 TransactionManager 使用
TransactionManager 實(shí)現(xiàn)編程式事務(wù)相對(duì)麻煩一點(diǎn),它需要使用兩個(gè)對(duì)象:TransactionManager 的子類,加上 TransactionDefinition 事務(wù)定義對(duì)象,再通過(guò)調(diào)用 TransactionManager 的 getTransaction 獲取并開(kāi)啟事務(wù),然后調(diào)用 TransactionManager 提供的 commit 方法提交事務(wù),或使用它的另一個(gè)方法 rollback 回滾事務(wù),
它的具體實(shí)現(xiàn)代碼如下:
從上述代碼可以看出,使用編程式事務(wù)更加靈活,但寫(xiě)法比較麻煩。
2.聲明式事務(wù)
聲明式事務(wù)的實(shí)現(xiàn)比較簡(jiǎn)單,只需要在方法上或類上添加 @Transactional 注解即可,當(dāng)加入了 @Transactional 注解就可以實(shí)現(xiàn)在方法執(zhí)行前,自動(dòng)開(kāi)啟事務(wù);在方法成功執(zhí)行完,自動(dòng)提交事務(wù);如果方法在執(zhí)行期間,出現(xiàn)了異常,那么它會(huì)自動(dòng)回滾事務(wù)。
它的具體使用如下:
當(dāng)然,@Transactional 支持很多參數(shù)的設(shè)置,它的參數(shù)設(shè)置列表如下:
參數(shù)的設(shè)置方法如下:
總結(jié)
本文我們介紹了兩種事務(wù)的實(shí)現(xiàn)方式:編程式事務(wù)或聲明式事務(wù)。其中編程式事務(wù)又分為兩種實(shí)現(xiàn):使用 TransactionTemplate 對(duì)象或更加底層的 TransactionManager 對(duì)象分別實(shí)現(xiàn)編程式事務(wù),它們的優(yōu)點(diǎn)是靈活性更高,可以在任何代碼片段上添加事務(wù);而聲明式事務(wù)的實(shí)現(xiàn)更加簡(jiǎn)單,只需要在類或方法上添加 @Transactional 注解即可實(shí)現(xiàn)事務(wù)的自動(dòng)開(kāi)啟和提交(以及回滾)。
到此這篇關(guān)于Java SpringBoot 中的操作事務(wù)的文章就介紹到這了,更多相關(guān)SpringBoot 操作事務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Jackson之ObjectMapper常用用法總結(jié)
這篇文章主要給大家介紹了關(guān)于Java Jackson之ObjectMapper常用用法的相關(guān)資料,ObjectMapper是一個(gè)Java庫(kù),用于將JSON字符串轉(zhuǎn)換為Java對(duì)象或?qū)ava對(duì)象轉(zhuǎn)換為JSON字符串,需要的朋友可以參考下2024-01-01Mybatis 動(dòng)態(tài)SQL的幾種實(shí)現(xiàn)方法
這篇文章主要介紹了Mybatis 動(dòng)態(tài)SQL的幾種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Maven倉(cāng)庫(kù)分類的優(yōu)先級(jí)
本文主要介紹了Maven倉(cāng)庫(kù)分類的優(yōu)先級(jí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04SpringBoot實(shí)現(xiàn)WebSocket全雙工通信的項(xiàng)目實(shí)踐
本文主要介紹了SpringBoot實(shí)現(xiàn)WebSocket全雙工通信的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Springboot訪問(wèn)html頁(yè)面步驟解析
這篇文章主要介紹了Springboot訪問(wèn)html頁(yè)面過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Java將日期類型Date時(shí)間戳轉(zhuǎn)換為MongoDB的時(shí)間類型數(shù)據(jù)
今天小編就為大家分享一篇關(guān)于Java將日期類型Date時(shí)間戳轉(zhuǎn)換為MongoDB的時(shí)間類型數(shù)據(jù),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10