對Java事務的認識
阿新 • • 發佈:2019-02-06
(1)PROPAGATION_REQUIRED: 如果存在一個事務,則支援當前事務。如果沒有事務則開啟。
(2)PROPAGATION_SUPPORTS: 如果存在一個事務,支援當前事務。如果沒有事務,則非事務的執行。
(3)PROPAGATION_MANDATORY: 如果已經存在一個事務,支援當前事務。如果沒有一個活動的事務,則丟擲異常。
(4)PROPAGATION_REQUIRES_NEW: 總是開啟一個新的事務。如果一個事務已經存在,則將這個存在的事務掛起。
(5)PROPAGATION_NOT_SUPPORTED: 總是非事務地執行,並掛起任何存在的事務。
(6)PROPAGATION_NEVER: 總是非事務地執行,如果存在一個活動事務,則丟擲異常。
(7)PROPAGATION_NESTED:如果一個活動的事務存在,則執行在一個巢狀的事務中. 如果沒有活動事務, 則按TransactionDefinition.PROPAGATION_REQUIRED 屬性執行
9.Spring事務的隔離級別
(1)ISOLATION_DEFAULT:這是一個PlatfromTransactionManager預設的隔離級別,使用資料庫預設的事務隔離級別.
(另外四個與JDBC的隔離級別相對應)
(2)ISOLATION_READ_UNCOMMITTED: 這是事務最低的隔離級別,它充許令外一個事務可以看到這個事務未提交的資料。這種隔離級別會產生髒讀,不可重複讀和幻像讀。
(3)ISOLATION_READ_COMMITTED: 保證一個事務修改的資料提交後才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的資料
(4)ISOLATION_REPEATABLE_READ: 這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。它除了保證一個事務不能讀取另一個事務未提交的資料外,還保證了避免不可重複讀情況產生。
(5)ISOLATION_SERIALIZABLE 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。
(2)PROPAGATION_SUPPORTS: 如果存在一個事務,支援當前事務。如果沒有事務,則非事務的執行。
(3)PROPAGATION_MANDATORY: 如果已經存在一個事務,支援當前事務。如果沒有一個活動的事務,則丟擲異常。
(4)PROPAGATION_REQUIRES_NEW: 總是開啟一個新的事務。如果一個事務已經存在,則將這個存在的事務掛起。
(5)PROPAGATION_NOT_SUPPORTED: 總是非事務地執行,並掛起任何存在的事務。
(6)PROPAGATION_NEVER: 總是非事務地執行,如果存在一個活動事務,則丟擲異常。
(7)PROPAGATION_NESTED:如果一個活動的事務存在,則執行在一個巢狀的事務中. 如果沒有活動事務, 則按TransactionDefinition.PROPAGATION_REQUIRED 屬性執行
9.Spring事務的隔離級別
(1)ISOLATION_DEFAULT:這是一個PlatfromTransactionManager預設的隔離級別,使用資料庫預設的事務隔離級別.
(另外四個與JDBC的隔離級別相對應)
(2)ISOLATION_READ_UNCOMMITTED: 這是事務最低的隔離級別,它充許令外一個事務可以看到這個事務未提交的資料。這種隔離級別會產生髒讀,不可重複讀和幻像讀。
(3)ISOLATION_READ_COMMITTED: 保證一個事務修改的資料提交後才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的資料
(4)ISOLATION_REPEATABLE_READ: 這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。它除了保證一個事務不能讀取另一個事務未提交的資料外,還保證了避免不可重複讀情況產生。
(5)ISOLATION_SERIALIZABLE 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。