如何在Spring Boot開啟事務

今天給大家介紹如何在Spring Boot中開啟事務丧枪,希望大家喜歡之斯。
說到事務日杈,那什么是事務呢?

事務(Transaction)佑刷,一般是指要做的或所做的事情莉擒。

  • 原子性(Atomicity):事務作為一個整體被執(zhí)行,包含在其中的對數(shù)據(jù)庫的操作要么全部被執(zhí)行项乒,要么都不執(zhí)行啰劲。
  • 一致性(Consistency):事務應確保數(shù)據(jù)庫的狀態(tài)從一個一致狀態(tài)轉變?yōu)榱硪粋€一致狀態(tài)。一致狀態(tài)的含義是數(shù)據(jù)庫中的數(shù)據(jù)應滿足完整性約束檀何。
  • 隔離性(Isolation):多個事務并發(fā)執(zhí)行時蝇裤,一個事務的執(zhí)行不應影響其他事務的執(zhí)行。
  • 持久性(Durability):已被提交的事務對數(shù)據(jù)庫的修改應該永久保存在數(shù)據(jù)庫中频鉴。

那么如何在Spring Boot中使用呢栓辜?其實只需要兩步即可:

  1. 在Application上添加@EnableTransactionManagement注解,用來開啟事務垛孔。
  2. 在Service實現(xiàn)類的方法上添加@Transactional注解藕甩。

具體實現(xiàn):
使用《Spring Boot中使用MyBatis詳解》的代碼,在TransactionalApplication啟動類上添加@EnableTransactionManagement注解開啟事務:

package com.zxw.transactional;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@SpringBootApplication
//開啟事務
@EnableTransactionManagement
public class TransactionalApplication {

    public static void main(String[] args) {
        SpringApplication.run(TransactionalApplication.class, args);
    }

}

在Service實現(xiàn)方法上添加@Transactional注解:

package com.zxw.transactional.controller;

import com.zxw.transactional.bean.PoetryBean;
import com.zxw.transactional.service.PoetryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class PoetryController {

    @Autowired
    private PoetryService poetryService;

    @Transactional
    @PostMapping("/register")
    public String registerVerse(PoetryBean poetryBean) {
        poetryService.addVerse(poetryBean);
        int i = 3 / 0;
        poetryService.addVerse(poetryBean);
        return "success";
    }
}

我在registerVerse方法添加了int i = 3 / 0;的代碼周荐,這段代碼肯定會報錯狭莱,在加了@Transactional注解后,我們看下可以往數(shù)據(jù)庫插入幾條數(shù)據(jù)概作?如果把@Transactional注解去掉又能添加幾條呢腋妙?大家可以試試。

項目地址:HelloSpringBoot

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讯榕,一起剝皮案震驚了整個濱河市骤素,隨后出現(xiàn)的幾起案子匙睹,更是在濱河造成了極大的恐慌,老刑警劉巖济竹,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痕檬,死亡現(xiàn)場離奇詭異,居然都是意外死亡送浊,警方通過查閱死者的電腦和手機梦谜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罕袋,“玉大人改淑,你說我怎么就攤上這事≡⊙叮” “怎么了朵夏?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長榆纽。 經(jīng)常有香客問我仰猖,道長,這世上最難降的妖魔是什么奈籽? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任饥侵,我火速辦了婚禮,結果婚禮上衣屏,老公的妹妹穿的比我還像新娘躏升。我一直安慰自己,他們只是感情好狼忱,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布膨疏。 她就那樣靜靜地躺著,像睡著了一般钻弄。 火紅的嫁衣襯著肌膚如雪佃却。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天窘俺,我揣著相機與錄音饲帅,去河邊找鬼。 笑死瘤泪,一個胖子當著我的面吹牛灶泵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播对途,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼丘逸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掀宋?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劲妙,沒想到半個月后湃鹊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡镣奋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年币呵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侨颈。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡余赢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哈垢,到底是詐尸還是另有隱情妻柒,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布耘分,位于F島的核電站举塔,受9級特大地震影響,放射性物質發(fā)生泄漏求泰。R本人自食惡果不足惜央渣,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渴频。 院中可真熱鬧芽丹,春花似錦、人聲如沸卜朗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聊替。三九已至楼肪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惹悄,已是汗流浹背春叫。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泣港,地道東北人暂殖。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像当纱,于是被迫代替她去往敵國和親呛每。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容