`
zhaoshengxuan108
  • 浏览: 26386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring + ibatis 事务出现不回滚的问题

 
阅读更多

ibatis 配置事务如下(applicationContext-dao.xml):

 

<!-- 数据源配置 -->
<bean id="dbtec2"  class="org.apache.commons.dbcp.BasicDataSource">
	<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
	<property name="url"
			value="jdbc:mysql://${dbtec2.ip}:3306/dbtec2?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull"></property>
	<property name="username" value="${dbtec2.username}"></property>
	<property name="password" value="${dbtec2.password}"></property>
	<property name="maxActive" value="100"></property>
	<property name="maxIdle" value="30"></property>
	<property name="maxWait" value="500"></property>
	<property name="defaultAutoCommit" value="false"></property>
</bean>

<!-- 数据源注入session工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<!-- 映射MYBATIS的XML文件 -->
	<property name="mapperLocations" value="classpath*:com/octlink/tec2/bus/dao/*.xml" />
	<!-- 引用数据源 -->
	<property name="dataSource" ref="dbtec2" />
	<!-- 数据类型别名 -->
	<property name="typeAliasesPackage" value="com.octlink.tec2.model" />
</bean>

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

<tx:advice id="txAdvice" transaction-manager="transactionManagerForIbatis">
	<tx:attributes>
		<tx:method name="get*" read-only="true" />
		<tx:method name="insert*" propagation="REQUIRED" />
		<tx:method name="delete*" propagation="REQUIRED" />
		<tx:method name="update*" propagation="REQUIRED" />
		<tx:method name="*" propagation="REQUIRED" />
	</tx:attributes>
</tx:advice>

<aop:config proxy-target-class="false">
	<aop:pointcut id="serviceMethod" expression="execution(* com.octlink.tec2.bus.system.*.service.*.*.*(..))" />
	<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
</aop:config>

 

 

Spring (spring-servlet):

<!-- 自动扫描bean,把作了注解的类转换为bean -->
<context:component-scan base-package="com.octlink.tec2.bus.system.*.controller" />

 

注意:配置不正确导致回滚失败。如果spring-servlet文件扫描组件时,包含了service层,在事务控制的过程中引入的不是applicationContext-dao里面定义的service,这样就没事务控制了,导致事务失败。所以扫描组件时,不要包含service层。

 

分享到:
评论

相关推荐

    Spring+ibatis 保留ibatis事务的配置

    这种配置方式使得ibatis能够在不依赖Spring事务管理的情况下独立工作,从而实现了对ibatis事务的保留。 #### 四、实现自定义控制回滚 当保留ibatis事务后,开发者可以在业务逻辑中更自由地控制事务的提交和回滚。...

    struts2+spring+ibatis的小demo

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

    Spring + Ibatis 与mysql集群集成

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

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

    3. **事务控制**:通常在Service层使用@Transactional注解进行事务控制,Spring会自动管理事务的开启、提交和回滚。 4. **异常处理**:在Controller层捕获并处理可能抛出的异常,确保正常响应。 这些jar包的集合...

    spring+ibatis声明式事务Demo_

    本示例“spring+ibatis声明式事务Demo”将探讨如何在Spring与iBatis集成环境中使用声明式事务管理。声明式事务管理允许开发者通过配置来控制事务,无需在代码中显式处理事务开始、提交和回滚。 **Spring框架** 是一...

    spring+ibatis声明式事务Demo

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

    Spring+iBatis+JOTM实现JTA事务

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

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

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

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

    本项目“spring+jotm+ibatis+mysql实现JTA分布式事务”旨在利用这些技术来确保在分布式环境中的数据一致性。下面将详细介绍这个项目所涉及的知识点。 首先,Spring框架是Java开发中最常用的应用框架之一,它提供了...

    Spring+iBatis配置[归类].pdf

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

    struts2+spring+ibatis学生管理demo

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

    struts2+spring+ibatis框架搭建手册

    然后,Spring可以管理这些SqlSession,提供事务的开始、提交、回滚等操作。 5. **实际应用**:在项目中,开发者会创建具体的Action类,这些类通常会包含处理用户请求的方法,并通过注入的Service类调用业务逻辑。...

    spring+ibatis

    完成后,Spring会自动提交或回滚事务。 9. **最佳实践**: - 尽可能使用注解配置,以减少XML配置文件的复杂性。 - 使用Spring的AOP进行事务管理,使事务处理更透明。 - 为每个Mapper接口创建单独的配置,保持...

    spring+ibatis的jpetstore实例工程,包含完整源代码和jar包

    7. **事务管理**:Spring提供了声明式事务管理,通过在服务层的方法上添加@Transactional注解,可以自动进行事务的开启、提交或回滚,简化了事务处理代码。 8. **单元测试**:在源代码中,通常会有相应的JUnit测试...

    基于Spring+Ibatis的安全线程实现

    5. **事务管理**:Spring的PlatformTransactionManager接口用于管理事务,可以自动进行回滚和提交,确保数据一致性。在配置文件中,我们可以选择合适的事务管理器,如DataSourceTransactionManager或...

    Spring+Struts+ibatis下配置数据读写分离及事务(一)

    通过AOP(面向切面编程)和TransactionProxyFactoryBean等工具,Spring可以自动处理事务的开始、提交、回滚等操作,开发者无需在业务逻辑代码中显式处理事务。在Spring中,我们可以设置事务的隔离级别、传播行为和...

    Spring+Struts+iBATIS整合

    Spring提供了声明式事务管理,只需在配置文件中设置事务边界,即可自动处理事务的提交和回滚,确保数据的一致性。 总的来说,Spring、Struts和iBATIS的整合能够为Java Web开发提供一个强大而灵活的架构。通过它们的...

    spring mvc+ibatis+spring注解

    在本项目中,很可能使用了@Transactional注解来实现声明式事务管理,这样可以在方法级别控制事务的开始、提交、回滚等操作,确保数据的一致性。 "分页排序查询"是Web应用中常见的需求,Spring MVC 和 Ibatis 结合...

    Spring + iBATIS

    Spring 是一个全面的后端开发框架,提供依赖注入、面向切面编程、事务管理等功能,而 iBATIS 是一个优秀的数据持久层框架,它简化了数据库操作,将 SQL 查询与 Java 代码分离。 在 Spring 和 iBATIS 的整合中,主要...

Global site tag (gtag.js) - Google Analytics