使用spring中的jdbcTemplate,一种配置。在一个service层中,有些情况是会同时调用不同的dao,对数据库进行存取操作,而这些操作具有原子性,即其中任何一个dao操作发生异常,整个受事务管理的方法都要rollback.
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="org.hsqldb.jdbcDriver">
</property>
<property name="url"
value="jdbc:hsqldb:hsql://localhost/xdb">
</property>
<property name="username" value="sa"></property>
<property name="password" value="hsql"></property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="baseTxProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="studentManagerService" parent="baseTxProxy" >
<property name="target">
<bean class="chuck.service.impl.StudentManagerServiceImpl">
<property name="studentDao">
<ref bean="studentDAO"/>
</property>
</bean>
</property>
</bean>
<bean id="studentDAO" class="chuck.dao.impl.StudentDAOImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>