Spring提供的事務管理可以分為兩類
傳統的JDBC事務管理
以往使用JDBC進行數據操作時
以往的我們使用JDBC在寫代碼時
Connection conn = null;
try
{
conn = DBConnectionFactory
conn
//do something
mit(); //commit transcation
}
catch(Exception e)
{
conn
//do sth
}
finally
{
try
{
conn
}
catch(SQLException se){ //do sth
//close ResultSet
//notice:Maybe ocurr Exception when u close rs
}
按照以往的思路來寫代碼
Spring提供的編程式的事務處理
Spring提供了幾個關於事務處理的類
?TransactionDefinition //事務屬性定義
?TranscationStatus //代表了當前的事務
?PlatformTransactionManager這個是spring提供的用於管理事務的基礎接口
我們使用編程式的事務管理流程可能如下
TransactionDefinition td = new TransactionDefinition();
TransactionStatus ts = transactionManager
try
{
//do sth
trmit(ts);
}
catch(Exception e){transactionManager
使用spring提供的事務模板TransactionTemplate
void add()
{
transactionTemplate
pulic Object doInTransaction(TransactionStatus ts)
{ //do sth}
}
}
TransactionTemplate也是為我們省去了部分事務提交
Spring聲明式事務處理
Spring聲明式事務處理也主要使用了ioc
使用TransactionInterceptor步驟
<bean id =
<property name=
<property name=
<value>
com
</value>
</property>
</bean>
<bean id=
<property name=
<property name=
<list>
<idref local=
</list>
</property>
</bean>
使用TransactionProxyFactoryBean:
<bean id=
<property name=
<property name=
<property name=
<props>
<prop key=
<prop key=
<prop key=
</props>
</property>
</bean>
TransactionProxyFactoryBean只是為組件的事務代理
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28680.html