spring管理事務
platfromtransactionmanager(平台管理事務) 幫助我們管理任意平台的事務
jdbc datasourcetransactionmanager
hibernate hibernatetransactionmanager
...... .............transactionmanager
事務: 4大特性
1 一致性 2 原子性 3 永續性 4 隔離性
事務安全: (複習)
事務執行緒安全: (複習) 髒讀 不可重複讀 幻讀 讀未提交
隔離級別有四種 1 2 4(讀已提交資料) 8
所有的事務操作有三步:
開啟事務
提交事務
回滾事務
spring管理事務利用了是spring 的aop思維 將事務的操作織入到目標物件當中去。
spring管理事務的屬性:
隔離級別
是否唯讀
事務的傳播行為(7種)
spring管理事務的方式
(1) **式
1. 配置事務管理物件
2. 配置事務管理的模板物件
在service種注入模板物件 然後呼叫模板物件的execute方法
<bean
name
="transactionmanager"
class
="org.springframework.jdbc.datasource.datasourcetransactionmanager">
<property
name
="datasource"
ref="datasource">property>
bean>
<bean
name
="transactiontemplate"
class
="org.springframework.transaction.support.transactiontemplate">
<property
name
="transactionmanager"
ref="transactionmanager">property>
bean>
@resource
(name ="transactiontemplate")
privatetransactiontemplatett;
@override
public voidtransform(integer form, integer to, integer money)
});}
(2)
xml配置
<bean
name
="transactionmanager"
class
="org.springframework.jdbc.datasource.datasourcetransactionmanager">
<property
name
="datasource"
ref="datasource">property>
bean>
1.有乙個事務的管理物件
2.配置事務的通知
標籤名 tx:advice id 給當前的事務起個標記 tran...配置剛剛的事務管理物件
配置引數: method name 可以是具體某個方法(方法名) 比較麻煩,可以去使用萬用字元的方式去配置
add* delete* update* get*
persist* remove* modify* find*
要求你的service 的命名必須規範
isolation 隔離級別使用預設即可 4 級別 default
propagation 事務的傳播行為 required
read-only 是否唯讀 (true/false) 預設否(看情況修改)
<tx
:advice
id="myadvice3"
transaction-manager
="transactionmanager">
<tx
:attributes>
<tx
:method
name
="transform"
isolation
="default"
propagation
="required"
read-only
="false"/>
<tx
:method
name
="get*"
isolation
="default"
propagation
="required"
read-only
="true"/>
<tx
:method
name
="add*"
isolation
="default"
propagation
="required"
read-only
="false"/>
tx
:attributes>
tx
:advice>
3. 將通知織入到目標物件
<aop
:config>
<aop
:pointcut
id="txpc"
expression
="execution(* cn.hd.springtransaction.impl.*serviceimpl.*(..))">aop
:pointcut>
<aop
:advisor
advice-ref
="myadvice3"
pointcut-ref
="txpc">aop
:advisor>
aop
:config>
配置切面不再使用aop:aspect 而是advisor
(3)
註解配置
1. 開啟註解模式
<tx
:annotation-driven>tx
:annotation-driven>
2. 在想要設定事務的地方
加入註解
@transactional
(isolation = isolation.default
,propagation = propagation.required
,readonly =false)
可以有兩個位置
(1).類上面,該類中所有的方法都會使用以上的引數的事務
(2).方法名上面,該方法使用引數中的事務
如果兩個都設定方法名上面的事務為準
spring 管理事務
spring 管理事務 管理切面類 事務的回滾,提交 spring提供的 事務管理器 之前,之後,拋異常時 spring提供的 事務 切入點 目標類中的方法 我們自己篩選 帶著切面類中的 動態織入到切入點上 事務 帶著事務管理器中的 動態織入到切入點上 spring與jdbc結合事務的管理 1.通過...
spring如何管理事務
spring提供的事務管理可以分為兩類 程式設計式的和宣告式的。程式設計式的,比較靈活,但是 量大,存在重複的 比較多 宣告式的比程式設計式的更靈活方便。1 傳統使用 jdbc 的事務管理 以往使用jdbc 進行資料操作,使用 datasource 從資料來源中得到 connection 我們知道資...
spring 註解管理事務
spring 註解管理事務 註解事務管理 參考 xmlns xmlns xsi xmlns context xmlns aop xmlns tx xmlns p xsi schemalocation spring beans 3.2.xsd spring context 3.2.xsd spring...