0 0

spring 3和ibatis事务配置不能回滚5

在controller层调用service
@RequestMapping("/test.html")
public String test(ModelMap map) {
    testService.t();//调用service
    return TemplateKeys.INDEX;
}
/////////////service
Device device=new Device();
device.setDeviceDesc("test");
d.saveOrUpdate(device);
float f=1/0;//故意抛出异常,测试
Menu1 me=new Menu1();
me.setMenu1Desc("dddd");
menu1DAO.save(me);

在上面代码中测试,但最终结果是device仍旧插入数据库里,没有回滚
下面是applicationContext.xml配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="minPoolSize" value="${jdbc.minPoolSize}" />
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"/> 
<property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
<property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
<property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>

<property name="acquireRetryAttempts" value="${jdbc.acquireRetryAttempts}"/>
<property name="acquireRetryDelay" value="${jdbc.acquireRetryDelay}"/>
<property name="testConnectionOnCheckin" value="${jdbc.testConnectionOnCheckin}"/>
<property name="automaticTestTable" value="${jdbc.automaticTestTable}"/>
<property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/>
<property name="checkoutTimeout" value="${jdbc.checkoutTimeout}"/>
    </bean>

<!-- 事物配置 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<aop:config>
<aop:pointcut id="serviceOperation" expression="execution(* com.asc.service.*.*(..))" />
<aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" />
</aop:config>
<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" rollback-for="Exception" />
</tx:attributes>
</tx:advice>




忘高手指导

问题补充:程序是正常的,就是事务不对,【把这部分内容放到 mvc那个XML 文件里面去就OK! 】这是什么意思?这本来就在applicationContext.xml里面的

问题补充:
7454103 写道
applicationContext.xml  这个是 bean 什么的配置文件
你用了 spring的MVC 就还有一个配置文件啊!
   spring-servlet.xml 这个! 就写在这个里面!

是用的spring的MVC,但我没配spring-servlet.xml,你看下附件的两个spring配置文件

问题补充:expression换成了expression="execution(* com.asc.service..*.*(..))" ,去掉了<tx:annotation-driven transaction-manager="transactionManager"/> 还是不行。。。没回滚
float f=1/0;//故意抛出异常,测试 这个应该是运行时异常吧

问题补充:
7454103 写道
引用
float f=1/0;//

这个是runtime异常!
你测试的时候是否把那些类 sevice都让spring管理了呢! 不要new 出来这样的事物也不会起作用的! 好好检查下!估计问题不大的!

那肯定都让spring管理的,我用的是annotation形式的
public interface ItestService
@service
public class testService{...}

dao层同上
但就是不能回滚。。。

问题补充:
7454103 写道
你写个测试的小例子 然后把你的项目打包放上来! 我本地调试下!

地址:http://localhost:8082/t/test.html
数据库配置文件:config/database/jdbc.properties
表配置文件为com.ascend.domain.ibatis.Test.xml

事务测试在TestService.java    float f=1/0;
t.part1.rar和t.part2.rar是打包好的

问题补充:请问高手有解决方法吗?

问题补充:
7454103 写道
你写个测试的小例子 然后把你的项目打包放上来! 我本地调试下!

请问调试的怎么样了
2010年10月11日 16:20

5个答案 按时间排序 按投票排序

0 0

你写个测试的小例子 然后把你的项目打包放上来! 我本地调试下!

2010年10月12日 09:31
0 0

引用
float f=1/0;//

这个是runtime异常!
你测试的时候是否把那些类 sevice都让spring管理了呢! 不要new 出来这样的事物也不会起作用的! 好好检查下!估计问题不大的!

2010年10月11日 17:42
0 0

恩! 我看 了!你的配置文件位置是对的!
值得注意的地方是:
1.0 确认你的范围
expression="execution(* com.asc.service.*.*(..))"
  换成
expression="execution(* com.asc.service..*.*(..))"
这样会扫描子包 和包下面的子包
2.0  异常的类型!
spring默认是 runtime异常才回滚的! 看下你的是异常类型!
3.0 如果没记错的话
<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.RuntionException" />
<tx:method name="delete*" rollback-for="Exception" />
<tx:method name="select*" rollback-for="Exception" />
<tx:method name="*" isolation="READ_COMMITTED" propagation="REQUIRED" rollback-for="java.lang.Exception" />
</tx:attributes>
</tx:advice>
<tx:annotation-driven transaction-manager="transactionManager"/>
这个和上面的 <tx:>配置的 事物是冲突的!选一个!
]<tx:annotation-driven transaction-manager="transactionManager"/>
这个的意思是用 annotation的方式管理事物! 所以你上面的 tx 标签配置的事物没用!
 
  

2010年10月11日 17:13
0 0

applicationContext.xml  这个是 bean 什么的配置文件
你用了 spring的MVC 就还有一个配置文件啊!
   spring-servlet.xml 这个! 就写在这个里面!

2010年10月11日 16:38
0 0

<!-- 事物配置 -->
<bean id="transactionManager"

引用
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<aop:config>
<aop:pointcut id="serviceOperation" expression="execution(* com.asc.service.*.*(..))" />
<aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" />
</aop:config>
<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" rollback-for="Exception" />
</tx:attributes>
</tx:advice>



如果程序正常的话!
把这部分内容放到 mvc那个XML 文件里面去就OK!

2010年10月11日 16:26

相关推荐

    Spring+ibatis 保留ibatis事务的配置

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

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

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

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

    本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

    spring+ibatis声明式事务Demo_

    通过这个Demo,开发者可以学习如何在Spring与iBatis集成的环境中配置和使用声明式事务,理解事务的ACID属性(原子性、一致性、隔离性和持久性)如何在实际项目中得到保障。此外,这也是理解和实践Spring AOP以及依赖...

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

    7. **AOP事务配置**:接下来,我们需要在Spring中配置AOP事务规则,定义哪些方法需要在事务中执行。通常使用`@Transactional`注解,但要在配置文件中开启注解驱动的事务管理。 ```xml ``` 8. **使用示例**:在...

    spring+ibatis声明式事务Demo

    声明式事务管理是Spring框架提供的一种方便、高效的方式,使得开发者无需手动控制事务的开始、提交、回滚等过程,而是通过配置或注解来声明事务边界。这种方式极大地提高了代码的可读性和可维护性。 首先,要理解...

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

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

    spring与ibatis整合集成实例

    3. **配置文件**:在整合过程中,需要配置两部分:Spring 配置文件(如 `applicationContext.xml`)和 iBATIS 配置文件(如 `sqlMapConfig.xml`)。Spring 配置文件中定义数据源、事务管理器以及 ...

    spring和ibatis整合

    5. **事务管理**:Spring的PlatformTransactionManager接口负责处理事务,通过配置,可以将iBatis的数据库操作纳入Spring的事务管理范围。这样,当发生异常时,可以自动回滚事务,保证数据的一致性。 6. **DAO层...

    spring mvc+ibatis+spring注解

    总之,这个项目展示了如何结合Spring MVC、Ibatis以及Spring注解,构建一个完整的Web应用程序,实现了数据的CRUD操作,以及分页排序查询和用户登录验证等功能,所有这些都基于非XML的配置方式,利用注解提高了开发...

    Spring+iBatis配置[归类].pdf

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

    ibatis事务控制案例

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

    spring整合ibatis

    6. **事务管理**:Spring提供了声明式事务管理,我们可以在方法上添加@Transactional注解,让Spring自动处理事务的开启、提交和回滚。 7. **使用Service和DAO**:在Spring的业务逻辑层Service中,通过@Autowired...

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

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

    Ibatis 事务处理

    而“IbatisInspring.rar”很可能是一个包含示例代码的压缩包,展示了如何在Spring中配置和使用Ibatis,以及如何进行事务配置。 总的来说,Ibatis的事务处理是通过与Spring框架的集成实现的,利用Spring的声明式事务...

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

    在本项目中,JOTM作为Spring的事务管理后端,负责处理分布式事务的提交和回滚。 接着,iBATIS是一个SQL映射框架,它简化了Java应用与数据库的交互。iBATIS通过XML或注解来配置和映射SQL语句,将数据库操作与业务...

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

    数据源配置确保了Spring能够连接到数据库,事务管理器则用于处理事务的提交和回滚,SqlSessionFactory是IBatis的核心,它创建SqlSession对象,用于执行SQL语句。 接着,我们需要创建MyBatis的Mapper接口和XML配置...

    Spring+iBatis+JOTM实现JTA事务

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

    Spring-Struts-IBatis-AOP-Transaction

    编程式事务管理需要开发者手动调用 begin/commit/rollback 方法,而声明式事务管理则更简洁,只需在方法上添加 @Transactional 注解,Spring 就会自动处理事务的开始、提交和回滚。 **SSI 集成** 在 "17-Prj-...

    Spring + Ibatis 与mysql集群集成

    3. **Ibatis配置**:Ibatis的配置文件中,需要指定数据源为Spring管理的数据源,这样Ibatis就能通过Spring获取数据库连接。同时,定义SQL映射文件,编写对应的XML映射语句。 4. **事务管理**:由于MySQL集群支持...

Global site tag (gtag.js) - Google Analytics