在使用Spring的DataSourceTransactionManager过程中,系统发生第一次错误并进行回滚,可是已经提交的数据没有回滚,从第二次开始,系统发生错误后回滚就正常了。
//对Spring的事务简单封装,使用DataSourceUtil获得和释放链接。
TransactionManager manager = new TransactionManager ();
try{
manager.begin();
//添加用户
db.execute("insert into USER(id, name) values(id, name)");
//添加用户地址(填写地址过长,出错)
db.execute("insert into ADDRESS(id, address) values(id, address)");
manager.commit();
}catch(Exception ex){
manager.rollback();
}
现象:
第一次提交失败时,系统回滚,但是用户信息已经插入。
第二次进行提交时,系统回滚,用户信息也被回滚。
测试环境:
Tomcat5 + C3P0(连接池) + DB2
Tomcat5 + C3P0(连接池) + MySQL
Weblogic + JNDI + DB2
现象都一致。
不知道大家是否碰到这样的问题?不知道如何解决?是否Spring的Bug?
分享到:
相关推荐
Spring 2.0版本在事务处理方面做了许多改进,使得开发者能够更有效地管理应用程序的事务边界。这篇博客将深入探讨Spring 2.0中的事务处理机制,以及如何通过`applicationContext.xml`配置文件来设置和管理事务。 ...
本文将详细介绍Spring 2.0的声明式事务配置以及如何简化这一过程。 首先,Spring提供了多种事务管理器,以适应不同的持久层技术和环境。对于单一资源,可以选择如DataSourceTransactionManager(适用于JDBC)、...
2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...
在基于Struts1.2和Spring2.0的架构中,通常会将`@Transactional`应用于Service层的方法,而Controller层负责接收请求并调用Service层。JDBC则用于与数据库进行交互。这样,事务的边界就被定义在Service层,确保了...
这些规则可以指定哪些方法需要在事务中执行,以及哪些异常会导致事务回滚。Spring的事务配置元信息结合`PlatformTransactionManager`和`TransactionInterceptor`,生成一个AOP代理,从而实现事务的自动管理。 配置...
接下来,Spring配置了事务管理器(TransactionManager),它是`org.springframework.jdbc.datasource.DataSourceTransactionManager`,该类使用指定的数据源进行事务管理。接着定义了一个名为`txAdvice`的事务建议,...
2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...
如果发生任何异常,Spring会自动回滚事务,确保数据一致性。 总的来说,Spring在JSP中的事务配置主要是通过XML配置文件完成的,包括数据源设置、事务管理器配置以及启用基于注解的事务管理。这种方式极大地简化了...
2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...
2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...
4. **配置事务管理器**:Spring 需要一个 PlatformTransactionManager 来管理事务,对于 MyBatis,通常是使用 DataSourceTransactionManager。配置完成后,Spring 就能接管 MyBatis 的事务控制。 5. **Mapper 配置*...
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知...