采用spring框架時,在 Service 層的方法中加上注解 @Transactional 就可以將這個方法加上事務管理。
如果這個方法中處理的業務邏輯比較多,比較耗時,那么可能會出現事務超時的異常
JTA transaction unexpectedly rolled back (maybe due to a timeout)
如果出現這個異常,解決辦法是在 @Transactional 中加上 timeout = 3000 ,這個時間就是超時時間,如下
@Transactional(timeout = 3000)
查看源碼可以知道這個 timeout 的值默認值是 transaction system 的值。