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.
    默認值:DEFAULTsql

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

相關文章
相關標籤/搜索