事務可以保障同一個業務中的多次對數據的寫操作全部成功,或全部失敗,以此保障數據安全。
所以,某個業務中有超過1次的增/刪/改操作,就必須使用事務,例如某個業務中有2次Update操作,或者1次Update加上1次Delete操作,甚至3次Update操作等。
在使用了SpringJDBC后,如果需要使用事務保障數據安全,只需要在業務方法之前添加`@Transactional`注解即可。
在SpringJDBC中,事務的操作大致是:
開啟事務:begin try { 執行數據操作,增/改/刪 提交事務:commit } catch (RuntimeException e) { 回滾事務:rollback }
也就是說,當框架以事務的方式執行業務時,將開啟事務,如果能正常執行結束,則提交事務,如果執行過程中捕獲到`RuntimeException`,則會自動回滾。
`@Transactional`注解還可以添加在業務類之前,則表示該業務類中所有業務方法都是以事務的方式來執行,通常並不推薦這樣處理,不必要的事務對QPS有負面影響。
還可以在注解中配置`rollbackFor`來確定捕獲哪些異常時才會自動回滾事務,例如:
@Transactional(rollbackFor=ServiceException.class)
小結:如果某個業務中涉及多次增/刪/改,則在業務方法之前添加`@Transactional`注解,並且,在視為錯誤的操作過程中,必須拋出`RuntimeException`或其子孫類異常。