什麼是事務控制?
與資料庫建立連線connection後,每一次的進行查詢、更新操作,如果沒有將其歸為乙個事務,則是獨立進行的。
而這樣會導致一些錯誤場景的發生。(經典的如銀行轉賬業務,轉出方錢減少了,期間發生了異常,對方的錢卻沒有到賬等情況)
為什麼要先了解程式設計式事務?
宣告式事務底層即通過程式設計式事務進行控制。而其中有部分引數、資訊需要了解,再在xml中進行配置。
故而需要了解程式設計式事務的相關物件、定義資訊。
platformtransactionmanager介面是 spring的事務管理器,它裡面提供了我們常用的操作事務的方法。
注意:
platformtransactionmanager是介面型別,不同的dao層技術則有不同的實現類,例如:
dao層技術是jdbc或mybatis時:org.springframework.jdbc.datasource.datasourcetransactionmanager
dao層技術是hibernate時:org.springframework.orm.hibernate5.hibernatetransactionmanager
transactiondefinition 是事務的定義資訊物件,裡面有如下方法:
1.事務隔離級別(isolation)
設定隔離級別,可以解決事務併發產生的問題,如髒讀、不可重複讀和虛讀。
2.事務傳播行為(propogation)transactionstatus 介面提供的是事務具體的執行狀態,方法介紹如下。
程式設計式事務控制三大物件
什麼是宣告式事務控制?
spring 的宣告式事務顧名思義就是採用宣告的方式來處理事務。這裡所說的宣告,就是指在配置檔案中宣告 ,用在 spring 配置檔案中宣告式的處理事務來代替**式的處理事務。
宣告式事務處理的作用
注意:spring宣告式事務控制底層就是aop實現的。
宣告式事務控制明確事項:
由其是aop實現的。故而可以想到:
1.引入tx命名空間
2.配置事務增強
3.配置事務aop織入
4.測試事務控制轉賬業務**@override
public void transfer(string outman, string inman, double money)
之後可以看到,由其轉出轉入在同乙個事務控制之下。即transfer方法下的操作屬於同一事務,在異常發生時,沒有進行事務提交,故而不會出現業務問題。
其中,《tx:method》 代表切點方法的事務引數的配置,例如:
這裡使用註解進行宣告式事務控制。
1.編寫accountdao
@repository("accountdao")
public class accountdaoimpl implements accountdao
public void in(string inman, double money)
}
2.編寫accountservice@service("accountservice")
@transactional
public class accountserviceimpl implements accountservice
}
註解的相關配置詳解
使用 @transactional 在需要進行事務控制的類或是方法上修飾,註解可用的屬性同 xml 配置方式,例如隔離 級別、傳播行為等。
註解使用在類上,那麼該類下的所有方法都使用同一套註解引數配置。
使用在方法上,不同的方法可以採用不同的事務引數配置。
xml配置檔案中要開啟事務的註解驅動
Spring配置宣告式事務控制
transactionmanager class org.springframework.jdbc.datasource.datasourcetransactionmanager name datasource ref datasource property bean tx adviceid txm...
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 ...