java - for循环中控制事务

查看:1249
本文介绍了java - for循环中控制事务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

Java项目开发过程中,有for循环,逐条处理10万条数据。由于逐条处理数据的时候,要更新6~7张表,希望,每次在执行for循环的时候,都对数据库做一次提交。
1.我的处理方法 是,将for循环中的方法提出来,然后,使用spring的手动开启事务的方法,在提取出来的方法上,配置了@Transactional(propagation = Propagation.REQUIRES_NEW),但是测试了几次,都没有效果。
2.由于提出处理的方法中,也有更新表,调用外部系统接口,查询表的操作。所以我想把有关联关系的操作 配置 在一个事务中,然后 外层的事务配置和内层的事务配置 如何来管理?

希望 得到各位的解答,谢谢!!!

解决方案

  1. 如果题主是用spring来做声明式事务的话,方法直接调用内部方法是不会走到代理类的(也就是不会走到切面),所以@Transactional可能会失效

  2. 题主这里的外部接口是通过RPC方法调用的么?如果通过RPC调用的话,建议题主不要直接放到事务里面,因为如果发生超时情况,会发生长事务,如果并发量大的话导致数据库连接数被用尽,系统就会处于不可用状态。

这篇关于java - for循环中控制事务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆