SSM-Spring-23:概念《Spring中的事務是什么?》


 

 

 

------------吾亦無他,唯手熟爾,謙卑若愚,好學若飢-------------

 

 

本篇博客會詳細講述Spring中的事務,會展開來用語言解釋,用於了解概念和准備面試

 

事務的概念

  一個或者一組sql語句來完成一個功能要么都執行,要么都不執行

 

事務具有的四個特性:  ACID特性!

 

        01.原子性:一個事物都是一個不可分割的單位!所有的操作 要么都執行,要么都不執行!

 

        02.一致性:事務必須是數據庫從一個一致性的狀態到達另一個一致性的狀態!

 

        03.隔離性:一個事務的執行不會被其他的事務干擾!事務之間相互獨立!

 

        04.持久性:事務一旦被提交!這個操作對數據庫來說是永久性的!

 

Spring的事務管理

 

         事務本事是數據庫中的概念! 按理說應該在數據訪問層(dao)

 

        

 

        絕大多數的情況下我們是把事務 提升到  業務邏輯層

 

        01.使用spring的事務代理工廠 來 管理事務!

 

        02.使用spring的注解                來 管理事務!     常用

 

        03.使用AspectJ的AOP配置     來 管理事務!      常用

 

需要掌握的兩個屬性名:        

  isolation:事務的隔離級別

 

           01.default:采用數據庫默認的事務隔離級別

 

               001.mysql ---》repeatable-read

 

               002.oracle---》read_committed

 

           02. repeatable-read:可重復讀取!解決了臟讀,不可重復讀,沒解決幻讀!

 

           03. read_committed讀已提交! 解決了臟讀,沒解決不可重復讀,幻讀!

 

           04. read_uncommitted讀未提交!什么都沒有解決!

 

           05. serializable串行化!級別最高!效率最低!不存在並發的問題!

 

        propagation: 事務的傳播行為:一共7中方式!

 

           01.required:是spring默認的事務傳播行為!

 

                  指定的方法必須在事務中執行!如果沒有事務,則會自動創建一個事務!

 

           02.supports:有事務就在事務環境下執行,沒有事務就直接執行!

 

           03.mandatory:

 

                  指定的方法必須在事務中執行!如果沒有事務,則拋出異常!

 

           04.requires_new:總是新創建一個事務!

 

              如果當前方法存在事務,則把當前的事務掛起,直到新創建的事務執行完畢后執行!

 

           05.not_supported:指定的方法不能在事務中執行!如果當前方法存在事務,則把當前的事務掛起!

 

           06.never:指定的方法不能在事務中執行!如果當前方法存在事務,則拋出異常!

 

           07.nested:指定的方法必須在事務內執行!

 

               如果執行的方法沒有事務,則會創建一個事務!

 

               如果執行的方法沒有事務,則會嵌套執行!

 

        

 

       timeout_default:定義了事務默認的超時時間

 

Spring事務管理的接口:PlatformTransactionManager

 

          常用的兩個實現類:

 

          01.使用jdbc和MyBatis時     使用DataSourceTrancationManager

 

          02.使用hibernate時              使用HibernateTrancationManager

 

Spring事務回滾的方式

 

          默認的回滾方式--》發生運行時異常回滾!發送受查異常時提交!

 

          受查異常肯定需要我們手動的設置回滾方式!

 

          運行時異常嚴重!一旦發生,JVM中止執行!

 

實現自定義異常類!RuntimeException -->  Exception --->  Throwable

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM