728x90
반응형
source 는 Github 에 있습니다.
목차는 Querydsl 목차 에 있습니다.
[spring batch 1편] spring batch processor, Writer 에서 sequence 를 mybatis 를 통해 여러 번 가져왔을 때, 같은 값이 나오는 경우
현상
- spring-batch chunked tasklet 의 processor 또는 Writer 에서 sequence 를 mybatis 를 통해 nextval 로 여러 번 가져왔을 때, 같은 값이 나오는 경우가 발생했습니다.
원인
같은 트랜잭션일 경우에만 이런 현상이 나옵니다.
sequence.nextval 을 가져올 때, 서버 쪽에 commit 명령어를 날려줘야 다음 값을 가져오도록 세팅되는 것이라 추정하고 있습니다.
해결방안
- mapper 에 @Transactional(propagation = Propagation.REQUIRES_NEW) 설정하면 됩니다. (임시 방편)
@Mapper
public interface TestMapper {
@Transactional(propagation = Propagation.REQUIRES_NEW)
int findSequence();
}
- 이렇게 하면 성능 이슈가 있으니 새로운 방법을 찾아봐야할 것 같습니다.
'Spring > batch' 카테고리의 다른 글
[spring batch 2편] FlatFileItemWriter Fixed length format 정리 (Header, Footer 사용) (0) | 2022.08.18 |
---|---|
QuerydslPagingItemReader 병렬 처리 정리 (0) | 2021.09.29 |
spring batch partitioner 정리 (2) | 2021.08.18 |
spring batch multi datasource, jpa, transactionManager 정리 (0) | 2021.07.18 |
spring-batch commit interval 이란? (0) | 2021.07.09 |
댓글