Spring管理事務

2021-08-21 05:59:28 字數 4089 閱讀 2504

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...