關(guān)于Spring事務(wù)隔離、傳播屬性與@Transactional注解
mysql默認的隔離級別是repeatable_read


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

