屬性: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註解則會重載方法級別的註解。數據庫