您的位置:首页 > 编程语言 > Java开发

spring配置JDBC事务

2012-03-24 22:03 429 查看
http://www.iteye.com/problems/2951

Spring+JDBC事务配置

悬赏:10 发布时间:2008-08-19 提问人:charity_lan (初级程序员)

<

> 猎头职位: 上海:
资深架构师

Java代码







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

<?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 (架构师)

Java代码







<bean id="abstractTxDefine" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

<bean id="abstractTxDefine" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">


Java代码







<bean id="multiTableFormdataService" parent="abstractTxDefine">

<bean id="multiTableFormdataService" parent="abstractTxDefine">


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

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

Sql代码







show table status from table_name;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: