`
jier007
  • 浏览: 1346 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

spring代理iBATIS时事务不能回滚

阅读更多

kkkk如题!

废话不多说了,直接上配置,配置如下,各位看了便知!

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans

	xmlns="http://www.springframework.org/schema/beans"

	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location"><value>classpath:jdbc.properties</value></property>
	</bean>


	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">
		<property name="url"><value>${jdbc.url}</value></property>
		<property name="driverClassName"><value>${jdbc.driver}</value></property>
		<property name="username"><value>${jdbc.username}</value></property>
		<property name="password"><value>${jdbc.password}</value></property>	
		<property name="defaultAutoCommit" value="false"></property>
	</bean>


	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>


	<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor" >
		<property name="transactionManager" ref="transactionManager" />
		<property name="transactionAttributes">
			<props>
				<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
			</props>
		</property>
	</bean>


	<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames"> <value>*Service</value></property>
		<property name="interceptorNames"><value>transactionInterceptor</value></property>
	</bean>

	<bean id="sqlMapClientFactory" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation"><value>classpath:sqlMapConfig.xml</value></property>
		<property name="dataSource" ref="dataSource"></property>
		<property name="lobHandler">
			<bean class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>
		</property>
	</bean>

	<bean id="sqlMapTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
		<property name="sqlMapClient" ref="sqlMapClientFactory" />
		<property name="exceptionTranslator">
			<bean class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
				<property name="dataSource" ref="dataSource" />
			</bean>
		</property>
	</bean>
</beans>

 daoContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
	<bean id="employeeDao" class="mypackage.dao.impl.EmployeeDaoImpl">
		<property name="sqlMapTemplate">
			<ref bean="sqlMapTemplate" />
		</property>
	</bean>
</beans>

 serviceContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
	<bean id="employeeService" class="mypackage.service.impl.EmployeeServiceImpl">
		<property name="employeeDao"><ref bean="employeeDao" /></property>
	</bean>
</beans>	

在EmployeeServiceImpl中故意让程序抛出了exception,但是事务仍然提交了:-(

分享到:
评论
3 楼 workman93 2008-07-23  
Spring代理需要一个RuntimeException才可以回滚。
2 楼 Allen 2008-06-18  
Where is ur pattern matching beanName(s) declared?

I can only find id declaration of those "*Service" beans...

Regards.
1 楼 jier007 2008-06-17  
<p>EmployeeDaoImpl.java</p>
<pre name='code' class='java'>package mypackage.dao.impl;

import org.springframework.orm.ibatis.SqlMapClientTemplate;

import mypackage.dao.EmployeeDao;
import mypackage.pojo.Employee;

public class EmployeeDaoImpl implements EmployeeDao
{
private SqlMapClientTemplate sqlMapTemplate;

public void saveEmployee(Employee emp)
{
sqlMapTemplate.insert("employee.save" emp);
}

public void setSqlMapTemplate(SqlMapClientTemplate sqlMapTemplate)
{
this.sqlMapTemplate = sqlMapTemplate;
}

public SqlMapClientTemplate getSqlMapTemplate()
{
return sqlMapTemplate;
}
}</pre>
<p>  EmployeeServiceImpl.java</p>
<pre name='code' class='java'>package mypackage.service.impl;

import mypackage.dao.EmployeeDao;
import mypackage.pojo.Employee;
import mypackage.service.EmployeeService;

public class EmployeeServiceImpl implements EmployeeService
{
private EmployeeDao dao;

public void saveEmp(Employee emp)
{
dao.saveEmployee(emp);
Integer.parseInt("回滚回滚回滚吧!!!");
}

public void setEmployeeDao(EmployeeDao dao)
{
this.dao = dao;
}
}</pre>
 

相关推荐

    Spring+ibatis 保留ibatis事务的配置

    根据提供的文件信息,本文将详细解析如何在Spring与ibatis框架整合时,通过特定配置来保留ibatis事务处理机制,并实现对事务的自定义控制。文章将围绕标题、描述及部分代码片段展开讨论。 ### Spring与ibatis整合...

    spring+ibatis声明式事务Demo_

    当该方法执行时,Spring会自动处理事务的开启、提交或回滚,这极大地简化了事务管理。 在“TransactionDemo”项目中,以下是一些关键知识点: 1. **配置文件**:通常包括Spring的bean定义文件(如`...

    spring+ibatis声明式事务Demo

    当我们谈论"spring+ibatis声明式事务Demo"时,我们关注的是如何在Spring框架中利用iBatis实现声明式事务管理。 声明式事务管理是Spring框架提供的一种方便、高效的方式,使得开发者无需手动控制事务的开始、提交、...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    这样,一旦发生异常,Spring会自动回滚事务,保证数据一致性。 最后,关于Spring与Struts2的集成。Spring作为应用框架,负责依赖注入和事务管理;Struts2则作为MVC框架,处理请求和视图。结合Ibatis,我们可以创建...

    SPRING IBATIS 保留IBATIS事务的配置方式

    根据提供的文件信息,本文将详细解析Spring与iBatis整合时如何保留并使用iBatis事务管理机制,以及如何在应用程序中实现手动控制事务的方法。 ### Spring与iBatis整合 Spring框架是一个全面的企业级应用开发框架,...

    spring ibatis 配置(包括事务管理)

    由于配置了事务管理,当出现异常时,Spring会自动回滚事务。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; @Transactional public void addUser(User user) {...

    spring与ibatis整合集成实例

    6. **事务管理**:Spring 提供了声明式事务管理,可以在配置文件中设置事务边界,由 Spring 自动处理事务的开启、提交、回滚等操作。在整合 iBATIS 时,通常会使用 Spring 的 PlatformTransactionManager 接口。 7....

    spring整合ibatis

    这种方式的优点在于,Spring可以帮助管理事务,提供统一的异常处理,而iBatis则负责SQL的执行,两者结合可以避免直接使用JDBC时的繁琐代码。 在实际开发中,还可以考虑使用MyBatis的动态SQL功能,如if标签、choose...

    Spring + Ibatis 与mysql集群集成

    只需在需要事务的Service层方法上添加@Transactional注解,Spring会自动管理事务的开始、提交或回滚。 5. **高可用性和负载均衡**:在Spring中,可以使用Ribbon或Hystrix组件实现对MySQL集群的负载均衡。这些组件会...

    spring和ibatis整合

    这样,当发生异常时,可以自动回滚事务,保证数据的一致性。 6. **DAO层设计**:在业务逻辑层(Service)和数据访问层(DAO)之间,可以创建Mapper接口的实现类,这个实现类通常由Spring自动创建并通过@Autowired...

    Spring+iBatis+JOTM实现JTA事务

    在集成Spring+iBatis+JOTM的环境中,Spring主要负责事务策略的配置和管理,iBatis则作为持久层框架,负责SQL的执行,而JOTM作为事务管理器,确保跨数据库的事务一致性。 1. **环境搭建** - 首先,确保安装了JDK ...

    Ibatis 事务处理

    然而,Ibatis不直接支持JTA,而是依赖于Spring框架或MyBatis-Spring集成来实现事务控制。 描述中提到的“NULL”可能表示这篇博文详细讨论了如何在Ibatis中集成Spring进行事务管理。Spring框架提供了一种声明式事务...

    struts2+spring+ibatis的小demo

    同时,Spring的事务管理确保了数据的一致性,比如在处理数据库操作时进行自动的回滚和提交。 **iBatis** 是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离。在本demo中,iBatis可能会被用来执行员工...

    spring+jotm+ibatis+mysql实现JTA分布式事务

    通常,这样的测试会模拟不同的事务场景,例如并发更新、异常处理等,以确保在各种情况下事务都能正确地进行提交或回滚。 总的来说,这个项目展示了如何利用Spring的事务管理能力,结合JOTM作为事务协调器,以及...

    搭建spring mvc+spring+ibatis所需所有jar包

    在构建Java Web应用程序时,Spring MVC、Spring和iBatis是三个非常重要的框架。Spring MVC作为Spring框架的一部分,主要用于处理Web请求,Spring则提供全面的依赖注入和面向切面编程功能,而iBatis则是一个优秀的...

    Spring宠物店非常典型的展现了Spring和IBatis的整合

    此外,Spring还提供了对异常处理的支持,当发生未检查异常(如NullPointerException)时,Spring会自动回滚事务;而对于受检查异常(如DataAccessException),是否回滚则取决于事务的配置。 总的来说,Spring宠物...

    ibatis事务控制案例

    编程式事务管理需要在代码中手动开启、提交和回滚事务,而声明式事务管理则依赖于Spring等框架进行配置。 **3. 编程式事务管理** 在Java中,你可以使用`java.sql.Connection`对象来管理事务。在业务逻辑代码中,你...

    spring and ibatis own back

    4. 事务管理:Spring的TransactionManager负责事务的开启、提交、回滚等操作。 5. 编写Mapper XML文件:定义SQL语句和结果映射,与Mapper接口对应。 6. 使用注解或XML编写SQL:在Mapper接口的方法上使用@Select、@...

    struts2+spring+ibatis学生管理demo

    同时,Spring的事务管理能力确保了对数据库操作的原子性和一致性,通过声明式事务管理,可以在XML配置文件中轻松设置事务边界,如开启、提交、回滚等操作。 Ibatis是轻量级的持久层框架,它简化了JDBC的繁琐工作,...

    Spring+iBatis配置[归类].pdf

    - 事务管理器(TransactionManager)配置,如`PlatformTransactionManager`,它与iBatis的数据源配置结合,控制事务的开始、提交和回滚。 - 数据源(DataSource)配置,定义如何连接到数据库。 - iBatis的...

Global site tag (gtag.js) - Google Analytics