@Translational 描述的方法是一個事務切入點方法
方法執行之前會開啟事務
執行之后會提交或回滾事務
由DataSourceTransactionManager封裝具體事務實現
/**
- 在業務層對象的類上添加了@Transactional注解,表示類中所有方法都要進行事務控制:
- 1)開啟事務
- 2)執行目標方法
- 3)提交或回滾事務
- FAQ?
- 1)事務屬性timeout的含義是什么?是否允許事務超時,默認不允許(-1),一直等.
- 2)事務屬性rollbackFor表示什么?出現什么異常事務要回滾
- 3)事務屬性readOnly含義是什么?這里的事務是否為只讀事務.(只讀事務中不允許執行更新操作)
- 4)事務屬性isolation含義是什么?用於設置隔離級別I(多個事務並發執行時可能會出現什么問題?-臟讀,不可重復讀,幻讀)
*/
@Transactional(timeout =60,rollbackFor = Throwable.class,readOnly = false
,isolation = Isolation.READ_COMMITTED,
propagation = Propagation.REQUIRED)
方法上的優先級高於類上的
@Transactional(noRollbackFor = ServiceException.class)
事務的傳遞性
常用的:
@Transactional(propagation=Propagation.REQUIRED)
當不同的業務層相互調用方法時,當前方法如果沒有事務則創建新事務,
如果當前有事務那么即使被調用方法也有事務也會參與當前方法的事務,