Spring框架下编写事物回滚小记

原创 2015年11月18日 09:51:12

使用事物前,数据库的表引擎必须要支持事物,比如使用InnoDB


Spring可以对事物进行自动维护,大致可以通过配置bean 过滤器和直接代码标签来控制.


列如:

<!-- 注册jdbc事物管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	<tx:annotation-driven transaction-manager="transactionManager"
		proxy-target-class="true" />

@Transactional //这里必须用在公用方法前,也可写在公用类前
	public Map<String,Object> saveNewUserTest(Map<String, Object> p) {
 //doing
 //代码中最好手动抛出runtime异常,使用try catch捕获异常后一定要再抛出异常
}

以上就可以基本实现事物的回滚了.


但是,在一些环境下spring封装会出现兼容性问题,表现为无论怎么使用都无法回滚.

遇到这种情况,我的解决办法是直接使用jdbc来手动实现回滚


关键代码:

                        Connection con =null
	                PreparedStatement ps=null;
			con =DataSourceUtils.getConnection(getDataSource());
			con.setAutoCommit(false);
			try {
		        ps=con.prepareStatement(sql1);
		        ps.executeUpdate();
		        ps=con.prepareStatement(sql2);
		        ps.executeUpdate();
		        ps=con.prepareStatement(sql3);
		        ps.executeUpdate();
		        
		        con.commit();
			} catch (Exception e) {
				con.rollback();
			}finally
			{
				con.setAutoCommit(true);
			}
			DataSourceUtils.releaseConnection(con, getDataSource());

这样就可以实现了


PS(java开发的环境真是恶心的东西)


相关文章推荐

整合hibernate和spring框架测试事物出现的异常

这个问题整了我好久,但是终于找出来了

Spring框架_事物管理器的配置

2.Spring的事务管理器配置 总体浏览:配置spring事务管理器的三个角色: 创建一个事物管理器(利用Spring的自动装备的知识点) ---------利用spring提供的事务管理器即可...

Spring事物不回滚

spring事物不回滚的问题 一、环境介绍 mysql数据库,springMVC,Mybatis,搭建完成测试过程中一个偶然的原因发现事物不回滚,立马想到数据库不支持。这个下面会有详细说明。 二、my...

spring事物不回滚问题!

一、 当你读这篇文章的时候,假如读者是在整合j2EE的三大框架式遇到这个问题,那应该就是下面这个问题:我记得当时我遇到这个问题的时候,是因为数据库的表,不支持事务!如果mysql不支持存储引擎,它将以...

Spring-Java事物回滚失效处理

Spring-Java事物回滚失效处理主要是因为关于检查型异常和非检查型异常区分不明,理解不深,代码编写不规范造成Spring的事物回滚处理失效。 那么什么是检查型异常什么又是非检查型异常呢?  最简...

Spring事物回滚详解

(一) 用编程的方法来实现,我觉得这种方法比较灵活,控制起来比较方便,但是需要写一些额外的代码...

spring事物配置不能回滚

最近发现项目里的事物不能回滚,弄了个demo测试了下。 由于把dao和service类注解自动扫描配在了spring-mvc文件里,导致事物配置回滚失败,其他操作正常; 正确做法是在spring-h...

整合springmvc+hibernate+spring事物无法回滚问题

事物无法回滚两种解决方法 1.在事物层抛给上层一个异常,上层捕获异常并做处理 2.手动回滚事物...
  • mth1412
  • mth1412
  • 2015年06月13日 23:13
  • 480

Spring mvc,MyBatis事物不回滚问题

采用的基本搭建环境:SpringMVC、MyBatis、MySQL、tomcat         Spring事务管理分解了传统的全局事务管理和本地事务管理的劣势,使得在任何环境中都可以使用统一的事...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring框架下编写事物回滚小记
举报原因:
原因补充:

(最多只允许输入30个字)