1. 程式人生 > >spring boot 事務

spring boot 事務

ring run 使用 llb req ans time 單位 異常

spring事務:默認自動提交
只讀:@Transactional(readOnly = true)
讀寫:@Transactional(),因為等同於@Transactional(readOnly = true,isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,timeout=-1)

Isolation.DEFAULT:這是默認值,表示使用底層數據庫的默認隔離級別。對大部分數據庫而言,通常這值就是TransactionDefinition.ISOLATION_READ_COMMITTED
Propagation.REQUIRED:這是默認值,如果當前存在事務,則加入該事務;如果當前沒有事務,則創建一個新的事務。
timeout=-1:單位是秒,默認為-1.即為底層數據庫事務系統的超時值,如果底層數據庫事務系統沒有設置超時值,那麽就是none,沒有超時限制。
rollbackFor/rollbackForClassName:不寫即默認時,只有在拋出的是unchecked異常時才回滾該事務,也就是拋出的異常為RuntimeException的子類(Errors也會導致事務回滾),而拋出checked異常則不會導致事務回滾。

註意:
@Transactional只能寫在public方面上邊。

unchecked異常 :不需要使用try-catch。如:空指針異常。
checked異常(重點) :也就是說必須try-catch或throws。因此,在某個方法上,如果有捕獲的異常,必須要寫rollbackForClassName。如果某些個異常時,不用回滾,則使用noRollbackForClassName。

spring boot 事務