for循环中控制事务

发布于 2022-09-02 13:57:16 字数 333 浏览 12 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

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

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

旧伤慢歌 2022-09-09 13:57:16

把for循环放置在controller层或者非service层,然后事务是在service层的方法上配置的,这样应该可以实现每调用一次提交一次。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文