spring配置JDBC事务

http://www.iteye.com/problems/2951

 

Spring+JDBC事务配置

悬赏:10 发布时间:2008-08-19 提问人:charity_lan (初级程序员)
Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">   
  3. <beans>   
  4.        
  5.      <bean id="dataSource"  
  6.         class="org.apache.commons.dbcp.BasicDataSource"  
  7.         destroy-method="close">   
  8.         <property name="driverClassName"     
  9.             value="com.mysql.jdbc.Driver" />   
  10.         <property name="url"    
  11.         value="jdbc:mysql://localhost:3306/mucun?useUnicode=true&amp;characterEncoding=utf-8&amp;useOldAliasMetadataBehavior=true"></property>   
  12.         <property name="username" value="root"></property>     
  13.         <property name="password" value=""></property>             
  14.         <property name="validationQuery" value="select 1" />                 
  15.         <property name="maxIdle" value="5" />    
  16.         <property name="maxWait" value="100" />     
  17.         <property name="maxActive" value="20" />   
  18.     </bean>   
  19.   
  20.     <bean id="transactionManager"  
  21.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
  22.         <property name="dataSource">   
  23.             <ref local="dataSource" />   
  24.         </property>   
  25.     </bean>      
  26.        
  27.     <bean id="abstractTxDefine" lazy-init="true"  
  28.         class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
  29.         <property name="transactionManager">   
  30.             <ref bean="transactionManager" />   
  31.         </property>   
  32.         <property name="transactionAttributes">   
  33.             <props>   
  34.                 <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>   
  35.             </props>   
  36.         </property>            
  37.     </bean>   
  38.         
  39.     <bean id="sqlMapClient"  
  40.         class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">   
  41.         <property name="configLocation">   
  42.             <value>WEB-INF/classes/sqlMapConfig.xml</value>   
  43.         </property>   
  44.         <property name="dataSource">   
  45.             <ref bean="dataSource"></ref>   
  46.         </property>   
  47.     </bean>   
  48.     <bean id="sqlMapDao"  
  49.         class="com.charity.common.dao.impl.SqlMapDaoUtilsImp">   
  50.         <property name="sqlMapClient" ref="sqlMapClient"/>   
  51.     </bean>    
  52.   
  53.     <bean id="jdbcDao" class="com.charity.common.dao.impl.JdbcDaoUtilsImp">   
  54.         <property name="dataSource">     
  55.             <ref local="dataSource" />   
  56.         </property>   
  57.     </bean>   
  58.        
  59.     <bean id="serviceManager" lazy-init="true"    
  60.         class="com.charity.common.service.impl.ServiceManager">   
  61.         <property name="sqlMapDao">   
  62.             <ref bean="sqlMapDao" />   
  63.         </property>   
  64.         <property name="jdbcDao">   
  65.             <ref bean="jdbcDao" />   
  66.         </property>   
  67.     </bean>   
  68.        
  69.     <bean id="multiTableFormdataService" parent="abstractTxDefine">   
  70.         <property name="target">   
  71.             <bean parent="serviceManager"  
  72.                 class="com.charity.common.service.impl.MultiTableFormdataService">   
  73.             </bean>   
  74.         </property>   
  75.     </bean>   
  76. </beans>  
<?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&amp;characterEncoding=utf-8&amp;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 (架构师)
Java代码 复制代码  收藏代码
  1. <bean id="abstractTxDefine" lazy-init="true"     
  2.         class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
<bean id="abstractTxDefine" lazy-init="true"  
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 


Java代码 复制代码  收藏代码
  1. <bean id="multiTableFormdataService" parent="abstractTxDefine">    
 <bean id="multiTableFormdataService" parent="abstractTxDefine">  


所以, 已经给multiTableFormdataService加了事务.

建议LZ查看自己mysql的engine是否不是InnoDB的.

Sql代码 复制代码  收藏代码
  1. show table status from table_name;   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值