spring沒有事務和隔離級別的實現,而是依賴於具體數據庫里的實現。
spring-tx包里的,其實主要是通過tx-manager去做事務管理,我們一般說是事務管理器。
注:mysql 事務隔離級別:https://www.cnblogs.com/Jomini/p/14016414.html
Spring 事務隔離級別
TransactionDefinition接口中定義了五個表示隔離級別的常量
1、默認級別 TransactionDefinition.ISOLATION_DEFAULT
使用后端數據庫默認的隔離界別,MySQL默認采用的REPEATABLE_READ隔離級別,Oracle默認采用的READ_COMMITTED隔離級別。
2、未提交讀 TransactionDefinition.ISOLATION_READ_UNCOMMITTED
最低的隔離級別,允許讀取,允許讀取尚未提交的的數據變更,可能會導致臟讀、幻讀或不可重復讀。
3、提交讀 TransactionDefinition.ISOLATION_READ_COMMITTED
允許讀取並發事務已經提交的數據,可以阻止臟讀,但是幻讀或不可重復讀仍有可能發生。
4、重復讀 TransactionDefinition.ISOLATION_REPEATABLE_READ
對同一字段的多次讀取結果都是一致的,除非數據是被本身事務自己所修改,可以阻止臟讀和不可重復讀,但幻讀仍有可能發生。
5、序列化 TransactionDefinition.ISOLATION_SERIALIZABLE
最高的隔離級別,完全服從ACID的隔離級別。所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾,也就說,該級別可以阻止臟讀、不可重復讀以及幻讀。但是這將嚴重影響程序的性能。通常情況下也不會用到該級別。