關(guān)于Spring事務(wù)隔離、傳播屬性與@Transactional注解
mysql默認(rèn)的隔離級(jí)別是repeatable_read
根據(jù)spring文檔,數(shù)據(jù)庫(kù)一共有4個(gè)隔離級(jí)別
- read_uncommit
- read_commited
- 讀已提交 ,解決了臟讀
- repeatable_read
- 可重復(fù)讀,解決了不可重復(fù)讀
- serializable
- 順序化 ,解決了幻讀
對(duì)應(yīng)的java類,org.springframework.transaction.annotation.Isolation
- 臟讀
- 事務(wù)1修改了行1,但是還沒(méi)commit,事務(wù)2讀取了未commit的行1,事務(wù)1回滾了行1;
- 不可重復(fù)讀
- 事務(wù)1讀了行1,事務(wù)2修改了行1并commit,事務(wù)1再次讀了行1,發(fā)現(xiàn)行1變了。
- 幻讀
- 事務(wù)1讀了滿足where條件的所有行,事務(wù)2插入了滿足where的一行,事務(wù)1再讀同樣的where條件時(shí),獲取了額外的“幻行”。
spring傳播屬性
spring事務(wù)傳播屬性,org.springframework.transaction.annotation.Propagation
,其他有
- required
- 當(dāng)前有事務(wù),則利用已有事務(wù);當(dāng)前沒(méi)有事務(wù),則創(chuàng)建事務(wù);
- required_new
- 創(chuàng)建新事物,如果存在事務(wù),暫停當(dāng)前事務(wù);注意這里的措辭,先創(chuàng)建新事務(wù),然后再判斷是否存在事務(wù),如果存在,則暫停;
- supports
- 當(dāng)前有事務(wù),使用當(dāng)前事務(wù),否則無(wú)事務(wù)執(zhí)行;
- nested
- 如果當(dāng)前存在事務(wù),則創(chuàng)建子事務(wù),其他的就跟required相同;只在特定的事務(wù)管理器支持nested,開箱即用的有JDBC DataSourceTransactionManager,有些JTA providers可能也支持nested事務(wù);
- never
- 非事務(wù)執(zhí)行,如果有事務(wù)則拋出異常;
- mandatory
- 使用當(dāng)前事務(wù),如果沒(méi)有事務(wù)則拋出異常;
@Transactional注解
@Transactional注解 事務(wù)超時(shí)時(shí)間:依賴底層事務(wù)系統(tǒng),取決于數(shù)據(jù)庫(kù)。
- rollbackfor
- 默認(rèn)RuntimeException回滾;checked exceptions(business exception)不會(huì)回滾;
- readonly
- 只能有查詢語(yǔ)句,不能有update、insert語(yǔ)句,僅對(duì)required、required_new起作用。
總結(jié)
隔離級(jí)別和傳播屬性是兩個(gè)概念,隔離級(jí)別屬于數(shù)據(jù)庫(kù),傳播屬性是spring的,它們的所有者是不同的;隔離級(jí)別是為了解決事物間影響的問(wèn)題;傳播屬性是為了解決,方法間事務(wù)互相利用的問(wèn)題;
到此這篇關(guān)于關(guān)于事務(wù)隔離、Spring傳播屬性與@Transactional注解的文章就介紹到這了,更多相關(guān)事務(wù)隔離和Spring傳播屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring+SpringMVC+Hibernate整合實(shí)例講解
在本篇文章里小編給大家整理的是關(guān)于Spring+SpringMVC+Hibernate整合實(shí)例講解,需要的朋友們可以學(xué)習(xí)下。2020-03-03Java批量插入數(shù)據(jù)的代碼實(shí)現(xiàn)
日常工作或者學(xué)習(xí)中,可能會(huì)遇到批量插入數(shù)據(jù)的需求,一般情況下數(shù)據(jù)量少的時(shí)候,我們會(huì)直接調(diào)用批量接口插入數(shù)據(jù)即可,當(dāng)數(shù)據(jù)量特別大時(shí),我們就會(huì)用到分批插入數(shù)據(jù),所以本文給大家介紹了Java批量插入數(shù)據(jù)的代碼實(shí)現(xiàn),需要的朋友可以參考下2024-01-01springboot tomcat的maxHttpFormPostSize參數(shù)示例解析
這篇文章主要介紹了springboot tomcat的maxHttpFormPostSize參數(shù)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Spring Boot 直接用jar運(yùn)行項(xiàng)目的方法
這篇文章主要介紹了Spring Boot 直接用jar運(yùn)行項(xiàng)目的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2018-02-02解決JDBC Connection Reset的問(wèn)題分析
這篇文章主要介紹了解決JDBC Connection Reset的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04spring的TransactionalEventListener事務(wù)感知源碼解析
這篇文章主要為大家介紹了spring的TransactionalEventListener事務(wù)感知源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09