在一些比較早期的專案可能 application server、framework、java runtime 的版本都比較舊或不允許做太大幅度的變動,這時候以程式來控制 transaction 變成唯一的選擇,本文主要參考這個 網址
首先在 applicationContext.xml 設定 transaction 相關物件
<bean id=”transactionManagerJDBC”
class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”dataSource” ref=”dataSource”></property>
</bean>
<bean id=”transactionTemplate” class=”org.springframework.transaction.support.TransactionTemplate”>
<property name=”transactionManager” ref=”transactionManagerJDBC”></property>
</bean>
<bean id=”jdbcTemplate” class=”org.springframework.jdbc.core.JdbcTemplate”>
<property name=”dataSource” ref=”dataSource”></property>
</bean>
接著將以上物件 inject 到需要 transaction contorl 的 java class,這部份就不再細述,transaction code example 如下
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
try {
// do you works here
} catch (Exception e) {
status.setRollbackOnly();
}
}
});