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

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 루프를 배치한 후, 서비스 레이어 방식에서 트랜잭션을 구성하여 호출할 때마다 한 번씩 제출이 가능하도록 합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿