當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring 事务与脏读、不可重复读、幻读
生活随笔
收集整理的這篇文章主要介紹了
Spring 事务与脏读、不可重复读、幻读
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
索引:
目錄索引
參看代碼 GitHub:
1.Spring 事務
2.事務行為
一、Spring 事務:
Spring 的事務機制是用統一的機制來處理不同數據訪問技術的事務處理。 Spring 的事務機制提供了一個 PlatformTransactionManager 接口,不同的數據訪問技術的事務使用不同的接口實現:JDBC -- DataSourceTransactionManagerJPA -- JpaTransactionManagerHibernate -- HibernateTransactionManagerJDO -- JdoTransactionManager分布式事務 -- JtaTransactionManager二、事務行為
@Transactional 的屬性可以定制事務的行為: 1.propagation--定義事務的生命周期默認值--Propagation.REQUIREDPropagation.REQUIRED--方法A調用時沒有事務新建一個事務,當方法A調用另外一個方法B時,方法B將使用相同的事務,如果此時方法B發生異常數據回滾的時候,整個事務將回滾。Propagation.REQUIRES_NEW--對于方法A和B,在方法調用的時候無論是否有事務存在都開啟一個新的事務,如果方法B有異常不會導致A方法的回滾。Propagation.NESTED--與Propagation.REQUIRES_NEW相同,支持JDBC,不支持JPA和Hibernate。Propagation.SUPPORTS--方法調用時,有事務就用事務,沒有就不用。Propagation.NOT_SUPPORTED--強制方法不在事務中執行,若有事務,在方法調用時,事務會先被掛起。Propagation.NEVER--強制方法不在事務中執行,若有事務則拋出異常。Propagation.MANDATORY--強制方法在事務中執行,若無事務則拋出異常。 2.isolation--隔離決定事務的完整性,可以設置多事務對相同數據下的處理機制默認值--Isolation.DEFAULTIsolation.READ_UNCOMMITTED--對于在A事務里修改了一條記錄但沒有提交事務,在B事務可以讀取到修改后的記錄,可能導致臟讀、不可重復讀、以及幻讀。Isolation.READ_COMMITTED--只有當在A事務里修改了一條記錄且提交事務之后,B事務才可以讀取到提交后的記錄,阻止臟讀,但可能導致不可重復讀和幻讀。Isolation.REPEATABLE_READ--具有Isolation.READ_COMMITTED的功能,并且當A事務讀取一條記錄時,B事務將不能修改這條記錄了,阻止臟讀、不可重復讀,但可能導致幻讀。Isolation.SERIALIZABLE--此級別下事務是順序執行的,可阻止臟讀、不可重復讀、幻讀,但開銷較大。Isolation.DEFAULT--使用當前數據庫的默認隔離級別,Oracle--READ_COMMITTEDSqlServer--READ_COMMITTEDMySQL--REPEATABLE_READ 3.timeout--事務過期時間,默認當前數據庫事務的過期時間 4.readOnly--指定當前事務是否是只讀事務,默認 false 5.rollbackFor--指定哪些異常引起事務回滾,源碼-- Class<? extends Throwable>[] rollbackFor() default {}; 6.noRollbackFor--指定哪些異常不引起事務回滾,源碼-- Class<? extends Throwable>[] noRollbackFor() default {};?
?
?
?
?
?
蒙
2018-05-03 16:29 周四
2018-05-11 22:41 周五
?
轉載于:https://www.cnblogs.com/Meng-NET/p/8986703.html
總結
以上是生活随笔為你收集整理的Spring 事务与脏读、不可重复读、幻读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 部署 ibase4j,iba
- 下一篇: 2015年职称计算机考试宝典,2015年