<?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.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/mucun?useUnicode=true&characterEncoding=utf-8&useOldAliasMetadataBehavior=true"></property>
<property name="username" value="root"></property>
<property name="password" value=""></property>
<property name="validationQuery" value="select 1" />
<property name="maxIdle" value="5" />
<property name="maxWait" value="100" />
<property name="maxActive" value="20" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<bean id="abstractTxDefine" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>WEB-INF/classes/sqlMapConfig.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
</bean>
<bean id="sqlMapDao"
class="com.charity.common.dao.impl.SqlMapDaoUtilsImp">
<property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
<bean id="jdbcDao" class="com.charity.common.dao.impl.JdbcDaoUtilsImp">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<bean id="serviceManager" lazy-init="true"
class="com.charity.common.service.impl.ServiceManager">
<property name="sqlMapDao">
<ref bean="sqlMapDao" />
</property>
<property name="jdbcDao">
<ref bean="jdbcDao" />
</property>
</bean>
<bean id="multiTableFormdataService" parent="abstractTxDefine">
<property name="target">
<bean parent="serviceManager"
class="com.charity.common.service.impl.MultiTableFormdataService">
</bean>
</property>
</bean>
</beans>
class MultiTableFormdataService extends ServiceManager{
实现业务代码
}
class ServiceManager {
jdbcDao;
sqlMapDao;
}
问题:
结果是在MultiTableFormdataService 类中多表保存,并没有因为某条语句错误而产生事务回滚。
不知道问什么,请指教
采纳的答案
2008-08-19 lggege (架构师)
<bean id="abstractTxDefine" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<bean id="multiTableFormdataService" parent="abstractTxDefine">
所以, 已经给multiTableFormdataService加了事务.
建议LZ查看自己mysql的engine是否不是InnoDB的.
1. show table status from