在进程数据库操作时候经常需要将多个数据库操作作为一个事务处理,
1、比如delete操作必须删除级联表的相关数据,update操作必须修改级联表的相关数据,insert操作必须在级联表中插入相应数据。如银行数据的安全性
2、一个数据库表的多次delete、update、insert操作(当然这个可以用存储过程处理)
本次操作需要删除多次执行结果,但要做到一个删除失败,其他的都不可以删除。使用JdbcTemplate进行事务处理。代码如下:
private PlatformTransactionManager transactionManager;
public PlatformTransactionManager getTransactionManager() {
return transactionManager;
}
public void setTransactionManager(PlatformTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
@Override
public List<Integer> delExcResuListByResuIdList(List<Integer> excuteResultIdList) throws SQLException {
// 正在运行不可删除
List<Integer> failExcResuIdList = new ArrayList<Integer>();
List<Integer> runningExcuteResultIdList = getRunningExcuteResultId();
// 一致删除
DefaultTransactionDefinition defTransacDef = new DefaultTransactionDefinition();
TransactionStatus transacstatus = transactionManager.getTransaction(defTransacDef);
for (int excuteResultId : excuteResultIdList) {
if (runningExcuteResultIdList.contains(excuteResultId))
failExcResuIdList.add(excuteResultId);
else
excuteResultDao.delExcResuByResuId(excuteResultId);
}
if (failExcResuIdList.size() > 0)
transactionManager.rollback(transacstatus);
else
transactionManager.commit(transacstatus);
return failExcResuIdList;
}
datasource配置文件添加
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
mysql数据库相关连的表类型改为InnoDB
参考:http://www.blogjava.net/sslaowan/archive/2007/02/06/98378.html
http://www.iteye.com/wiki/Spring-source/1223-Spring声明式事务管理源码解读之事务开始
http://www.iteye.com/wiki/Spring-source/1219-Spring声明式事务管理源码解读之事务提交
分享到:
相关推荐
spring 事务处理
aop与spring事务处理
主要介绍了Spring事务处理原理步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
NULL 博文链接:https://yizhenn.iteye.com/blog/2293339
针对Java Spring 框架的核心技术场景案例,AOP和事务处理部分的应用案例,涉及业务层接口万次执行效率,百度网盘密码数据兼容处理和转账业务追加日志三个案例
事务的4大特性 原子性(Atomicity) 一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作。 一致性(Consistency) 一旦事务完成(不管成功还是失败),系统必须确保涉及的数据处于一致的状态,而...
事务简介 二、程序举例环境搭建 o1. 创建数据表 ...三、使用 Spring 的事务注解管理事务 o1. 声明事务管理器 o2. 开启注解驱动 o3. 完整Spring配置文件 o4. 业务层 public 方法加入事务属性 o5. 测试
spring-tx spring-transaction spring事务管理实例
spring声明式事务处理demo。myeclipse工程
主要介绍了Spring事务处理流程和原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring Hibernate 事务处理 详细说明 Spring Hibernate 事务处理 详细说明
这是在java里使用到spring的配置文件里,添加事务处理过程,以至于可以回滚事务,当中使用到拦截器。
1.1 Spring事务处理时自我调用的解决方案及一些实现方式的风险 1.2 我对AOP的理解 1.3 Spring开闭原则的表现-BeanPostProcessor的扩展点-1 1.4 我对IoC/DI的理解 1.5 SpringMVC + spring3.1.1 + hibernate4.1.0 集成...
spring整合hibernate实现事务处理 1.spring整合hibernate实现事务处理-注解方式 2.spring整合hibernate实现事务处理-XML方式
自己整理的spring事务处理文档,自我感觉比较全面。呵呵。
Spring事务管理4种方式 入门级 最简单demo PlatformTransactionManager TransactionTemplate
Spring源代码解析(六):Spring声明式事务处理.doc
NULL 博文链接:https://todd-liangt.iteye.com/blog/337274