propagation:事務傳播機制有如下幾種:
required:預設值,表示如果存在乙個事務,則支援當前事務;如果沒有事務,則開啟乙個新事務。
requires_new:表示總是開啟乙個新的事務,如果乙個事務已經存在,則將這個存在的事務掛起,開啟新事務執行該方法。
mandatory:表示如果存在乙個事務,則支援當前事務;如果當前沒有乙個活動的事務,則丟擲異常。
nested:表示如果當前存在乙個活動的事務,則建立乙個事務作為當前事務的巢狀事務執行;如果沒有當前事務,該取值與required相同。
supports:表示如果存在乙個事務,則支援當前事務;如果當前沒有事務,則按非事務方法執行。
not_supported:表示總是以非事務方式執行,如果乙個事務已經存在,則將這個存在的事務掛起,然後執行該方法。
neber:表示總是以非事務方式執行,如果當前存在乙個活動的事務,則丟擲異常。
isolation:事務隔離等級,即當前事務和其他事務的隔離程度,在併發事務處理的情況下需要考慮它的設定。
default:預設值,表示使用資料庫預設的事務隔離級別。
read_uncommitted:未提交讀。
read_committed:提交讀。
repeatable_read:可重複讀。
seroalizable:序列讀。
timeout:事務超時時間。
允許事務執行的最長時間,以秒為單位,超過指定的時間自動回滾,防止事務執行時間過長而影響系統效能。該屬性需要底層的實現支援。預設值:-1,表示不超時。
read-only:事務超時時間,允許是否為唯讀,預設值:false。
對於只用於查詢的功能事務,設定為true,能提高事務處理的效能。
rollback-for:設定能夠觸發回滾的異常型別。spring 預設只在丟擲 runtime exception 才標識事務回滾。
可以通過全限定類名自行指定需要回滾事務的異常,多個類名用英文逗號隔開。
no-rollback-for:設定不觸發回滾的異常。spring 預設 checked exception 不會觸發事務回滾。
可以通過全限定類名自行指定不需回滾事務的異常,多個類名用英文逗號隔開,設定完事務規則,最後還要定義切面,將事務規則應用到指定的方法上。
一、在spring配置檔案配置事務
二、使用註解方式實現事務:spring配置檔案新增如下**:
1、業務邏輯實現類上 新增@transactional 註解
2、方法體上 新增@transactional 註解,這個權重會比上一種大。
預設的@transactional設定:
事務傳播特性是:propagation_required
事務隔離級別是:isolation_default
事務是讀/寫
runtime exception 觸發回滾,checked exception 不觸發事務回滾。
Spring宣告式事務
net.sf.hibernate.dialect.oracle9dialect false true net.sf.hibernate.transaction.jdbctransactionfactory 1025 用heibernate來管理事務 當用spring和heibernate一起完成da...
spring宣告式事務
1.什麼是事務 事務是程式中一系列嚴密的操作,所有操作執行必須成功完成,否則在每個操作所做的更改將會被撤銷,這也是事務的原子性 要麼成功,要麼失敗 2.事務的特性 事務特性分為四個 原子性 atomicity 一致性 consistency 隔離性 isolation 持續性 durability ...
spring 宣告式事務
資料來源 bean id datasource class org.apache.commons.dbcp.basicdatasource destroy method close property name driverclassname value com.mysql.jdbc.driver p...