spring事務配置有幾種方式 1spring的事務是什么?與數(shù)據(jù)庫的事務是否一樣?
1spring的事務是什么?與數(shù)據(jù)庫的事務是否一樣?本質(zhì)上其實是同一個概念,spring的事務是對數(shù)據(jù)庫的事務的封裝,最后本質(zhì)的實現(xiàn)還是在數(shù)據(jù)庫,假如數(shù)據(jù)庫不支持事務的話,spring的事務是沒有作用
1spring的事務是什么?與數(shù)據(jù)庫的事務是否一樣?
本質(zhì)上其實是同一個概念,spring的事務是對數(shù)據(jù)庫的事務的封裝,最后本質(zhì)的實現(xiàn)還是在數(shù)據(jù)庫,假如數(shù)據(jù)庫不支持事務的話,spring的事務是沒有作用的.數(shù)據(jù)庫的事務說簡單就只有開啟,回滾和關閉,spring對數(shù)據(jù)庫事務的包裝,原理就是拿一個數(shù)據(jù)連接,根據(jù)spring的事務配置,操作這個數(shù)據(jù)連接對數(shù)據(jù)庫進行事務開啟,回滾或關閉操作.但是spring除了實現(xiàn)這些,還配合spring的傳播行為對事務進行了更廣泛的管理.其實這里還有個重要的點,那就是事務中涉及的隔離級別,以及spring如何對數(shù)據(jù)庫的隔離級別進行封裝.事務與隔離級別放在一起理解會更好些.以上回答希望能幫助到你.
怎么理解spring事務的傳播特性?
Spring中通過Propagation來設置事務的傳播屬性的,在這個屬性中提供了我們其中關于事務傳播的特性:
1.PROPAGATION_REQUIRED:支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
2.PROPAGATION_SUPPORTS:支持當前事務,如果當前沒有事務,就以非事務方式執(zhí)行。
3.PROPAGATION_MANDATORY:支持當前事務,如果當前沒有事務,就拋出異常。
4.PROPAGATION_REQUIRES_NEW:新建事務,如果當前存在事務,把當前事務掛起。
5.PROPAGATION_NOT_SUPPORTED:以非事務方式執(zhí)行操作,如果當前存在事務,就把當前事務掛起。
6.PROPAGATION_NEVER:以非事務方式執(zhí)行,如果當前存在事務,則拋出異常。
7.PROPAGATION_NESTED:支持當前事務,新增Savepoint點,與當前事務同步提交或回滾。