開啟事務,就需要在spring的配置檔案中配置事務管理器
id="datasourcetransactionmanager"
class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
name="datasource"
ref="combopooleddatasource">
property>
bean>
transaction-manager="datasourcetransactionmanager"/>
然後在service層的docash方法上加上:@transactional註解
事務一般是加在service層
事務的傳播屬性
事務傳播屬性可以在@transactional註解的propagation屬性中定義
事務的隔離級別
@transactional(isolation=isolation.read_committed)
- 讀未提交:read uncommitted
允許transaction01讀取transaction02未提交的修改
- 讀已提交:read committed
要求transaction01只能讀取transaction02已提交的修改
- 可重複讀:repeatable read
保transaction01可以多次從乙個欄位中讀取到相同的值,即transaction01執行期間禁止其它事務對這個字段進行更新
- 序列化:serializable
確保transaction01可以多次從乙個表中讀取到相同的行,在transaction01執行期間,禁止其它事務對這個表進行新增、更新、刪除操作。可以避免任何併發問題,但效能十分低下
觸發事務回滾的異常
- rollbackfor屬性:指定遇到時必須進行回滾的異常型別,可以為多個
- norollbackfor屬性:指定遇到時不回滾的異常型別,可以為多個
事務超時及唯讀屬性
- 超時:timeout
- 唯讀:readonly
宣告式事務
宣告式事務編輯以方法為單位,進行事物控制 丟擲異常,事物回滾。最小的執行單位為方法。決定執行成敗是通過是否丟擲異常來判斷的,丟擲異常即執行失敗 宣告式事務 declarative transaction management 是spring提供的對程式事務管理的方式之一。spring的宣告式事務顧名...
宣告式事務
程式設計式事務 指的是由程式設計師編寫事務控制 包含事務的提交與回滾等。宣告式事務 事務控制 已經由spring寫好,程式設計師只需要宣告出哪些方法需要進行事務控制和如何進行事務控制。宣告式事務都是針對serviceimpl類下的方法的 事務管理器是基於通知 advice 的 service介面 p...
Spring宣告式事務
net.sf.hibernate.dialect.oracle9dialect false true net.sf.hibernate.transaction.jdbctransactionfactory 1025 用heibernate來管理事務 當用spring和heibernate一起完成da...