DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update("INSERT INTO USER VALUES('Spring008', 'caterpillar', 'M', 29)");
jdbcTemplate.update("INSERT INTO USER VALUES('Spring009', 'momor', 'F', 26)");
jdbcTemplate.update("INSERT INTO USER VALUES('Spring010, 'beckyday', 'F', 35)");
} catch (DataAccessException ex) {
transactionManager.rollback(status); // 也可以執(zhí)行status.setRollbackOnly();
throw ex;
}
transactionManager.commit(status);
見(jiàn):http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2398
<bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">2.spring配置文件加入:
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="target">
<ref bean="userDAO"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
見(jiàn):http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2402
二. Spring的@Transcation的例子
1. class 中
@Component //注釋就可以將該類定義了 Spring 容器中的 Bean
public Class UserDaoImpl implements IUserDao {
@Override
//標(biāo)志updateUsers()為Transactional
@Transactional(
propagation = Propagation.REQUIRED,
isolation = Isolation.DEFAULT,
rollbackFor = Exception.class
)
public void updateUsers(List<User> users){
for(User user :users){
//邏輯
}
}
}
注意: 事務(wù)的屬性和基本概念
Required : 如果在一個(gè)事務(wù)中調(diào)用,就將該方法加到此事務(wù)中,如果沒(méi)有啟動(dòng)事務(wù),就創(chuàng)建新事務(wù)
RequiredNew : 不管當(dāng)前有沒(méi)有事務(wù),都啟動(dòng)新事務(wù),如果有,會(huì)被掛起,直到此方法結(jié)束
NotSupported : 不能在事務(wù)中執(zhí)行此方法,如果有事務(wù),會(huì)被掛起,直到此方法結(jié)束
Supports : 如果有當(dāng)前事務(wù),此方法回加到當(dāng)前事務(wù),如果沒(méi)有,容器不會(huì)啟動(dòng)新事務(wù)
Mandatory : 必須在事務(wù)中執(zhí)行此方法,否則會(huì)拋出異常 : TransactionRequiredException
Never : 必須不在事務(wù)中調(diào)用此方法,否則拋出RemoteException(遠(yuǎn)程調(diào)用)或EJBException(本地調(diào)用)
另外:
http://www.ibm.com/developerworks/cn/java/j-ts1.html
http://www.javaworld.com.tw/confluence/display/opensrc/Spring
http://www.redsaga.com/spring_ref/2.0/html/transaction.html#transaction-declarative
聯(lián)系客服