上午有個朋友問我,他在一個service方法中對兩張表進行了插入操作.那么它們之間是否會有影響,一個出了異常會不會影響到另一個.對此,我做了以下測試.
圖中的transactionalTest方法中有兩個插入操作,第一個insertVm方法是可以正常執行的,第二個insertTask方法是會拋異常的.
我執行了兩遍,第一個方法正常往數據庫中插入了數據,第二個insert方法沒有往數據庫插入數據.說明這樣的操作,兩個insert操作互不干擾.
隨后,我對該方法加了@Transactional(rollbackFor = Exception.class)注解
再次運行之后發現,加了注解之后,第一個insert方法也回滾了,沒有往數據庫中插入任何一條數據.
結論:不加@Transactional注解,則里邊的數據庫操作互不干擾,正常執行過去的操作會寫入到數據庫中.加了注解之后,該方法中的數據庫操作會保持事務的一致性,一個拋了異常,則所有事務回滾.
以上為個人測試所得觀點,不恰當之處歡迎各位大神指出.