spring+ibatis事务问题
spring+ibatis 用spring的事务管理,
问题:dao一个方法中执行2个操作,第一个操作执行完(第二个还没执行)时,抛出异常,但是第一个操作不能回滚,郁闷,为什么?提前谢谢各位xdjm。
下面是spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
"-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/ccl"></property>
<property name="username" value="root"></property>
<property name="password" value="admin"></property>
<property name="connectionProperties">
<props>
</props>
</property>
</bean>
<bean id="jdbcTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource"><ref local="dataSource"/></property>
</bean>
<bean id="jdbcTransactionProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager">
<ref bean="jdbcTransactionManager"/>
</property>
<property name="target">
<ref local="authenticationDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="update*">PROPAGATION_REQUIRED,-AuthenticationException</prop>
</props>
</property>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:com/ppsoft/smart/conf/sqlMapConfig.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<!-- Authentication Service Begin -->
<bean id="authenticationDAO" class="com.ppsoft.smart.application.authentication.dao.AuthenticationDAOImp">
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="authenticationService" parent="jdbcTransactionProxy" >
<property name="target">
<bean class="com.ppsoft.smart.application.authentication.service.AuthenticationServiceImp">
<property name="authenticationDAO">
<ref bean="authenticationDAO"/>
</property>
</bean>
</property>
</bean>
<!-- Authentication Service End -->
</beans>
ibatis sqlMap配置文件
<?xml version="1.0" encoding="EUC-KR" standalone="no" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="20"
maxSessions="10"
maxTransactions="10"
useStatementNamespaces="true"
/>
<sqlMap resource="com/ppsoft/smart/conf/test.xml"/>
</sqlMapConfig>
dao方法:
public void deleteStudent1() throws AuthenticationException{
try{
int i=1;
System.out.println("begin");
getSqlMapClientTemplate().update("test.updateStudent1", "");
if(i==1)
throw new AuthenticationException();
getSqlMapClientTemplate().update("test.updateStudent2", "");
System.out.println("over");
}catch(Exception e){
throw new AuthenticationException();
}
}