手動編碼的方式完成事務管理:
需要事務管理器:真正管理事務物件.
* spring提供了事務管理的模板(工具類.)
第一步:註冊事務管理器:
id="transactionmanager"
class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
name="datasource"
ref="datasource"/>
bean>
第二步:註冊事務模板類:
id="transactiontemplate"
class="org.springframework.transaction.support.transactiontemplate">
name="transactionmanager"
ref="transactionmanager"/>
bean>
第三步:在業務層注入模板類:(模板類管理事務)
id="accountservice"
class="cn.itcast.spring3.demo1.accountserviceimpl">
name="accountdao"
ref="accountdao"/>
name="transactiontemplate"
ref="transactiontemplate"/>
bean>
第四步:在業務層**上使用模板:
public
void
transfer(final string from, final string to, final double money)
});}
手動編碼方式缺點:
* **量增加,**有侵入性.
宣告式事務管理:(原始方式)
基於transactionproxyfactorybean.
匯入:aop相應jar包.
第一步:註冊平台事務管理器:
id="transactionmanager"
class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
name="datasource"
ref="datasource"/>
bean>
第二步:建立業務層**物件:
id="accountserviceproxy"
class="org.springframework.transaction.interceptor.transactionproxyfactorybean">
name="target"
ref="accountservice"/>
name="transactionmanager"
ref="transactionmanager"/>
name="transactionattributes">
//key:service中的方法
key="transfer">propagation_requiredprop>
props>
property>
bean>
第三步:編寫測試類:
*千萬注意:注入**物件
@autowired
@qualifier("accountserviceproxy")
private accountservice accountservice;
"transfer">propagation_required
prop格式:propagation,isolation,readonly,-exception,+exception
順序:傳播行為、隔離級別、事務是否唯讀、發生哪些異常可以回滾事務(所有的異常都回滾)、發生了哪些異常不回滾.
宣告式事務管理:(自動**.基於切面)
第一步:匯入相應jar包.
* aspectj
第二步:引入相應約束:
* aop、tx約束.
""
xmlns:xsi=""
xmlns:context=""
xmlns:aop=""
xmlns:tx=""
xsi:schemalocation="
/spring-beans.xsd
/spring-context.xsd
/spring-aop.xsd
/spring-tx.xsd">
第三步:註冊事務管理器;
id="transactionmanager"
class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
name="datasource"
ref="datasource"/>
bean>
第四步:定義增強(事務管理)
id="txadvice"
transaction-manager="transactionmanager">
name="transfer"/>
tx:attributes>
tx:advice>
第五步:定義aop的配置(切點和通知的組合)
expression="execution(* cn.itcast.spring3.demo3.accountservice+.*(..))"
id="mypointcut"/>
advice-ref="txadvice"
pointcut-ref="mypointcut"/>
aop:config>
第六步:編寫測試類:
* 注入service物件,不需要注入**物件(生成這個類的時候,已經是**物件.)
基於註解的事務管理:
第一步:事務管理器:
id="transactionmanager"
class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
name="datasource"
ref="datasource"/>
bean>
第二步:註解事務:
transaction-manager="transactionmanager"/>
第三步:在service上使用註解
@transactional
* 註解中有屬性值:
* isolation
* propagation
* readonly
Spring事務管理
spring是ssh中的管理員,負責管理其它框架,協調各個部分的工作。今天一起學習一下spring的事務管理。spring的事務管理分為宣告式跟程式設計式。宣告式就是在spring的配置檔案中進行相關配置 程式設計式就是用註解的方式寫到 裡。下面先說宣告式 spring配置檔案中關於事務配置總是由三...
spring事務管理
一 xml配置事務 二 註解的方式配置事務 bean id txmanaager class org.springframework.orm.hibernate3.hibernatetransactionmanager property name sessionfactory ref session...
spring 事務管理
和資料庫打交道的碼農都知道事務,事務有4大特徵,分別是原子性,一致性,隔離性,永續性。而spring 對事物提供了良好的支援,和api,通過簡單的配置,則可以減低程式設計師重複的操作。1.原子性 原子性指的是乙個事務內的所有操作要麼全部應用到資料庫,要麼取消對資料庫的操作。2.一致性 一致性和原子性...