java - for循环中控制事务
PHPz
PHPz 2017-04-17 17:45:26
0
3
769

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

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

PHPz
PHPz

学习是最好的投资!

全部回覆(3)
小葫芦
  1. 如果題主是用spring來做聲明式事務的話,方法直接調用內部方法是不會走到代理類的(也就是不會走到切面),所以@Transactional可能會失效

  2. 題主這裡的外部接口是透過RPC方法調用的麼?如果通過RPC調用的話,建議題主不要直接放到事務裡面,因為如果發生超時情況,會發生長事務,如果並發量大的話導致數據庫連線數被用盡,系統就會處於不可用狀態。

PHPzhong

https://docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/ch04.html

洪涛

把for循環放置在controller層或非service層,然後事務是在service層的方法上配置的,這樣應該可以實現每調用一次提交一次。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板