<?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