国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

spring事務(wù)和數(shù)據(jù)庫(kù)事務(wù)是怎么實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了spring事務(wù)和數(shù)據(jù)庫(kù)事務(wù)是怎么實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Spring事務(wù)的原理

Spring事務(wù)的本質(zhì)其實(shí)就是數(shù)據(jù)庫(kù)對(duì)事務(wù)的支持,沒有數(shù)據(jù)庫(kù)的事務(wù)支持,spring是無法提供事務(wù)功能的。對(duì)于純JDBC操作數(shù)據(jù)庫(kù),想要用到事務(wù),可以按照以下步驟進(jìn)行:

  1. 獲取連接 Connection con = DriverManager.getConnection()
  2. 開啟事務(wù)con.setAutoCommit(true/false);
  3. 執(zhí)行CRUD
  4. 提交事務(wù)/回滾事務(wù) con.commit() / con.rollback();
  5. 關(guān)閉連接 conn.close();
    使用Spring的事務(wù)管理功能后,我們可以不再寫步驟 2 和 4 的代碼,而是由Spirng 自動(dòng)完成。

那么Spring是如何在我們書寫的 CRUD 之前和之后開啟事務(wù)和關(guān)閉事務(wù)的呢?

Spring中的事務(wù)是如何實(shí)現(xiàn)的?

  1. Spring事務(wù)底層是基于數(shù)據(jù)庫(kù)事務(wù)和AOP機(jī)制的。

  2. 首先對(duì)于使用了@Transactional注解的Bean,Spring會(huì)創(chuàng)建一個(gè)代理對(duì)象作為Bean。

  3. 當(dāng)調(diào)用代理對(duì)象的方法時(shí), 會(huì)先判斷該方法上是否加了@Transactional注解

  4. 如果加了,那么則利用事務(wù)管理器創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接

  5. 并且修改數(shù)據(jù)庫(kù)連接的autocommit屬性為false, 禁止此連接的自動(dòng)提交, 這是實(shí)現(xiàn)Spring事務(wù)非常重要的一步。

  6. 然后執(zhí)行當(dāng)前方法,方法中會(huì)執(zhí)行sql

  7. 執(zhí)行完當(dāng)前方法后,如果沒有出現(xiàn)異常就直接提交事務(wù)。

  8. 如果出現(xiàn)了異常,并且這個(gè)異常是需要回滾的就會(huì)回滾事務(wù),否則仍然提交事務(wù)。

  9. Spring事務(wù)的隔離級(jí)別對(duì)應(yīng)的就是數(shù)據(jù)庫(kù)的隔離級(jí)別。

  10. Spring事務(wù)的傳播機(jī)制是Spring事務(wù)自己實(shí)現(xiàn)的,也是Spring事務(wù)中最復(fù)雜的

  11. Spring事務(wù)的傳播機(jī)制是基于數(shù)據(jù)庫(kù)連接來做的,一個(gè)數(shù)據(jù)庫(kù)連接一個(gè)事務(wù), 如果傳播機(jī)制配置為需要新開一個(gè)事務(wù),那么實(shí)際上就是先建立一個(gè)數(shù)據(jù)庫(kù)連接, 在此新數(shù)據(jù)庫(kù)連接上執(zhí)行sql文章來源地址http://www.zghlxwxcb.cn/news/detail-636138.html

到了這里,關(guān)于spring事務(wù)和數(shù)據(jù)庫(kù)事務(wù)是怎么實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot中操作數(shù)據(jù)庫(kù)的幾種并發(fā)事務(wù)方式

    當(dāng)有多個(gè) 并發(fā) 事務(wù)時(shí),會(huì)發(fā)生丟失更新異常。來自一個(gè)或多個(gè) 事務(wù) 的更新可能會(huì)丟失,因?yàn)槠渌聞?wù)會(huì)用其結(jié)果覆蓋它。 讓我們通過一個(gè)例子來檢驗(yàn)一下??紤]以下執(zhí)行事務(wù)的方法。 public void withdraw(Long accountId, double amount) { Account account = accountRepository.findById(accountId).orEl

    2024年01月22日
    瀏覽(42)
  • layui+java spring 實(shí)現(xiàn)圖片文件新增到數(shù)據(jù)庫(kù)

    layui+java spring 實(shí)現(xiàn)圖片文件新增到數(shù)據(jù)庫(kù)

    layui+java spring 實(shí)現(xiàn)圖片文件新增到數(shù)據(jù)庫(kù) 1.首先layui是個(gè)不再更新的網(wǎng)址有想了解的可以瀏覽官網(wǎng) 表格組件 table - Layui 文檔 2.官網(wǎng)內(nèi)有專門的組件 代碼直接粘過來即可 !DOCTYPE html html head ? meta charset=\\\"utf-8\\\" ? meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\" ? titleDemo/title ?

    2024年02月07日
    瀏覽(24)
  • 【數(shù)據(jù)庫(kù)】Python腳本實(shí)現(xiàn)數(shù)據(jù)庫(kù)批量插入事務(wù)

    【數(shù)據(jù)庫(kù)】Python腳本實(shí)現(xiàn)數(shù)據(jù)庫(kù)批量插入事務(wù)

    在工作中可能會(huì)遇到需要批量插入的場(chǎng)景, 而批量插入的過程具有 耗時(shí)長(zhǎng) 的特點(diǎn), 再此過程很容易出現(xiàn)程序崩潰的情況.為了解決插入大量數(shù)據(jù)插入后崩潰導(dǎo)致 已插入數(shù)據(jù)無法清理 及 未插入數(shù)據(jù)無法篩出 的問題, 需要編寫一個(gè)腳本記錄已插入和未插入的數(shù)據(jù), 并可以根據(jù)記錄

    2024年02月08日
    瀏覽(19)
  • Java(一):創(chuàng)建 Spring Boot 項(xiàng)目并實(shí)現(xiàn)連接操作MySQL數(shù)據(jù)庫(kù)

    Java(一):創(chuàng)建 Spring Boot 項(xiàng)目并實(shí)現(xiàn)連接操作MySQL數(shù)據(jù)庫(kù)

    MySQL 命令 Maven 相關(guān)地址 下載地址: https://maven.apache.org/ maven配置方法地址: https://developer.aliyun.com/mvn/guide 倉(cāng)庫(kù)搜索地址: https://mvnrepository.com/ https://repo.maven.apache.org/ maven 本地配置 conf/settings.xml 下載 idea 并配置本地環(huán)境 maven Maven 構(gòu)建 生命周期 Maven 的構(gòu)建 生命周期 包括 三

    2024年02月07日
    瀏覽(28)
  • 【數(shù)據(jù)庫(kù)】事務(wù)的隔離級(jí)別以及實(shí)現(xiàn)原理

    【數(shù)據(jù)庫(kù)】事務(wù)的隔離級(jí)別以及實(shí)現(xiàn)原理

    經(jīng)常提到數(shù)據(jù)庫(kù)的事務(wù),那你知道數(shù)據(jù)庫(kù)還有事務(wù)隔離的說法嗎,事務(wù)隔離還有隔離級(jí)別,那什么是事務(wù)隔離,隔離級(jí)別又是什么呢?本文就幫大家梳理一下。 事務(wù),由一個(gè)有限的數(shù)據(jù)庫(kù)操作序列構(gòu)成,這些操作要么全部執(zhí)行,要么全部不執(zhí)行,是一個(gè)不可分割的工作單位。

    2023年04月26日
    瀏覽(28)
  • Go 語(yǔ)言實(shí)現(xiàn) MySQL 數(shù)據(jù)庫(kù)事務(wù)

    MySQL事務(wù)是指一組數(shù)據(jù)庫(kù)操作,它們被視為一個(gè)邏輯單元,并且要么全部成功執(zhí)行,要么全部回滾(撤銷)。事務(wù)是數(shù)據(jù)庫(kù)管理系統(tǒng)提供的一種機(jī)制,用于確保數(shù)據(jù)的一致性和完整性。 事務(wù)具有以下特性(通常由ACID原則定義): 原子性(Atomicity):事務(wù)中的所有操作要么全

    2024年02月08日
    瀏覽(21)
  • 【cfengDB】自己實(shí)現(xiàn)數(shù)據(jù)庫(kù)第0節(jié) ---整體介紹及事務(wù)管理層實(shí)現(xiàn)

    【cfengDB】自己實(shí)現(xiàn)數(shù)據(jù)庫(kù)第0節(jié) ---整體介紹及事務(wù)管理層實(shí)現(xiàn)

    LearnProj 本文作為數(shù)工底層的項(xiàng)目CfengDB開始篇章,介紹開發(fā)緣由和實(shí)現(xiàn)思路 cfeng之前對(duì)數(shù)據(jù)庫(kù)研究不深入,之前只是能夠做到基本的SQL查詢和基本的慢SQL優(yōu)化,之前拿到數(shù)據(jù)庫(kù)系統(tǒng)工程師證書還是只在業(yè)務(wù)上對(duì)于DB系統(tǒng)使用更深入,但是cfeng基于work的理解,當(dāng)作為一個(gè)優(yōu)秀的產(chǎn)

    2024年02月16日
    瀏覽(31)
  • java八股文面試[數(shù)據(jù)庫(kù)]——數(shù)據(jù)庫(kù)三范式

    java八股文面試[數(shù)據(jù)庫(kù)]——數(shù)據(jù)庫(kù)三范式

    什么是范式? 范式是數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)遵循的 一種規(guī)范 ,不同的規(guī)范要求遵循不同的范式。 最常用的三大范式 第一范式(1NF): 屬性不可分割 ,即每個(gè)屬性都是不可分割的原子項(xiàng)。(實(shí)體的屬性即表中的列) 理解:一個(gè)列不能包含兩個(gè)數(shù)據(jù) 第二范式(2NF):滿足第一范式;且不存在

    2024年02月10日
    瀏覽(22)
  • JAVA面試數(shù)據(jù)庫(kù)篇

    JAVA面試數(shù)據(jù)庫(kù)篇

    目錄 數(shù)據(jù)庫(kù)篇 一.優(yōu)化 1.定位慢查詢 MYSQL中,如何定位慢查詢? 2.SQL執(zhí)行計(jì)劃 SQL語(yǔ)句執(zhí)行慢,如何分析呢? 3.索引 了解過索引嗎?(什么是索引) 索引的底層數(shù)據(jù)結(jié)構(gòu)了解過嗎? B樹和B+樹的區(qū)別是什么呢? 什么是聚簇索引什么是非聚簇索引?/什么是聚集索引,什么是二級(jí)索

    2024年02月13日
    瀏覽(27)
  • JAVA面試部分——后端-數(shù)據(jù)庫(kù)前篇

    5.1 mysql中char和varchar的區(qū)別,varchar(100)中的一百的含義,能存放多少漢字? 在MySQL中,CHAR和VARCHAR都是用來存儲(chǔ)字符串的數(shù)據(jù)類型,但它們之間存在一些主要區(qū)別。 存儲(chǔ)方式:CHAR是固定長(zhǎng)度的,而VARCHAR是可變長(zhǎng)度的。這意味著CHAR會(huì)根據(jù)你設(shè)定的長(zhǎng)度存儲(chǔ)字符串,即使實(shí)際

    2024年01月16日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包