spring註解事務行爲之@Transactional

屬性:propagation
    含義:REQUIRED:方法A調用時沒有事務新建一個事務,當在方法A調用另外一個方法B的
    時候,方法B將使用相同的事務。如果方法B發生異常需要數據回滾的時候,整個事務數據
    回滾。
           REQUIRES_NEW:對於方法A和B,在方法調用的時候無論是否有事務都開啓一個新的 的作用是將
    事務。如果方法B有異常不會導致方法A的數據回滾。
           NESTED:和REQUIRES_NEW類似,僅支持JDBC,不支持JPA和Hibernate
           SUPPORTS:方法調用時有事務就用事務,沒有就不用。
           NOT_SUPPORTED:強制方法不在事務中執行,若有事務,在方法調用到結束階段事務
    將會被掛起
           NEVER:強制方法不在事務中執行,若有事務則拋出異常。
           MANDATORY:強制方法在事務中執行,若無事務則拋出異常。           
    默認值:REQUIRED
    
    屬性:isolation
    含義:READ_UNCOMMITTED:對於A事務裏修改了一條記錄但沒有提交事務,在B事務可以讀取到
    修改後的記錄,會導致髒讀、不可重複讀及幻讀。
          READ_COMMITTED:只有當在A事務裏修改了一條記錄且提交事務之後,B事務纔可以讀取到
    提交後的記錄。阻止髒讀,但可能會導致不可重複讀和幻讀。
          REPEATABLE_READ:不僅能實現READ_COMMITTED的功能,而且還能阻當A事務讀取了一條
    記錄,B事務將不允許修改這條記錄。阻止髒讀和不可重複讀,但可出現幻讀。
          SERIALIZABLE:此級別下事務是順序執行的,可以避免上述級別的缺陷,但開銷較大
          DEFAULT:使用當前數據庫的默認隔離界級別,如Oracle、SQL Server是READ_COMMITTED
    Mysql是REPEATABLE_READ.
    默認值:DEFAULT

    屬性:timeout
    含義:指定事務過期時間,默認爲當前數據庫的事務過期時間
    默認值:TIMEOUT_DEFAULT
     
    屬性:readOnly
    含義:指定當前事務是否只讀事務
    默認值:false
    
    屬性:rollbackFor
    含義:指定哪個或者哪些異常可以引起事務回滾
    默認值:Throwable的子類
    
    屬性:noRollbackFor
    含義:指定哪個或者哪些異常不可以引起事務回滾
    默認值:Throwable的子類
    
    用法:@Transactional註解可以在類和方法上使用,當註解在類上則所有public方法都是開啓事務的,
    當註解在類和方法同時使用了@Transactional註解則會重載方法級別的註解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章