一、spring事務的傳播機制(hibernatetransactionmanager)
1.如果當前沒有事務,就新建乙個事務;如果已存在乙個事務,就加入到這個事務中。
2.支援當前事務,如果當前沒有事務,以非事務方式執行。
3.使用當前事務,如果當前沒有事務,則丟擲異常。
4.新建事務,如果當前存在事務,則把當前事務掛起。
5.以非事務方式執行,如果當前存在事務,則把當前事務掛起。
6.以非事務方式執行,如果當前存在事務,則丟擲異常。
7.如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與 1. 類似的操作。
二、spring事務隔離級別(isolation level)
isolation_default
這是乙個platfromtransactionmanager預設的隔離級別,使用資料庫預設的事務隔離級別.
另外四個與jdbc的隔離級別相對應;
isolation_read_uncommitted(未提交讀)
這是事務最低的隔離級別,它充許別外乙個事務可以看到這個事務未提交的資料。
這種隔離級別會產生髒讀,不可重複讀和幻像讀。
isolation_read_committed(提交讀)
保證乙個事務修改的資料提交後才能被另外乙個事務讀取。另外乙個事務不能讀取該事務未提交的資料。
這種事務隔離級別可以避免髒讀出現,但是可能會出現不可重複讀和幻像讀。
isolation_repeatable_read(可重複讀)
這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。
它除了保證乙個事務不能讀取另乙個事務未提交的資料外,還保證了避免下面的情況產生(不可重複讀)。
isolation_serializable(序列化)
這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。
除了防止髒讀,不可重複讀外,還避免了幻像讀。
髒讀:指乙個事務讀取了乙個未提交事務的資料
不可重複讀:在乙個事務內讀取表中的某一行資料,多次讀取結果不同.乙個事務讀取到了另乙個事務提交後的資料.
虛讀(幻讀):在乙個事務內讀取了別的事務插入的資料,導致前後讀取不一致(insert)
五個隔離級別:
髒不幻(金不換)
第乙個是資料庫預設
第二個會出現:髒讀、不可重複讀、幻讀
第三個會出現:不可重複讀、幻讀
第四個會出現:幻讀
第五個全部都不會出現
Spring 事務七大傳播行為
transactional的屬性 propagation,事務傳播行為,列舉型別 propagation。注意 事務傳播行為在同一service類中是無效的,只有在aservice 呼叫 bservice才有效。因為事務處理是通過aop 攔截工作的,在同一service裡呼叫,不會再觸發 方法攔截。...
Spring事物的傳播
spring的事物對於同乙個類內部呼叫是不會生效的。比如乙個servicea,裡面有個方法x 和y 其中x沒有配置事物,而y配置的有實物。如果是乙個沒有事物的serviceb呼叫了servicea的x方法,而在x裡面直接通過this.y 的方式呼叫y方法。那麼y是不會有實物的,就算配置成propag...
spring七大模組
它主要的元件就是beanfactory,是工廠模式的實現。同時beanfactory適用控制反轉 ioc 思想將應用程式的配置和依賴性規範與實際的應用程式分開。spring上下文是乙個配置檔案,向spring框架提供上下文資訊。spring上下文包括企業服務,如jndi ejb 電子郵件 國際化 校...