반응형
문제
@Bean(JOB_NAME + "_reader")
public ItemReader<Product> itemReader() {
return new JpaPagingItemReaderBuilder<Product>()
.name(JOB_NAME + "_reader")
.pageSize(CHUNK_SIZE)
.entityManagerFactory(entityManagerFactory)
.queryString("SELECT p FROM Product p")
.build();
}
이렇게 JpaPagingItemReader로 엔티티를 읽어오도록 하고, 각 Product 엔티티별로 price를 +1000 하는 작업을 하기로 했다.
9개를 가지고 작업을 했었는데, 어느 건 그대로인데 어느 건 2번 작업이 되어 있다.
해결
@Bean(JOB_NAME + "_reader")
public ItemReader<Product> itemReader() {
return new JpaPagingItemReaderBuilder<Product>()
.name(JOB_NAME + "_reader")
.pageSize(CHUNK_SIZE)
.entityManagerFactory(entityManagerFactory)
.queryString("SELECT p FROM Product p ORDER BY p.id") // 여기 !!!
.build();
}
id를 기준으로 정렬했다.
모두 +1000 된 것을 볼 수 있다.
근데 왜 쿼리가 2번 나가는지 모르겠다. 로그가 2번 찍히는 건가 싶기도 했는데 처리 시간이 0ms인 것과 1ms인 것이 있다.
왜 이러지... 일단 p6spy로 로그를 찍고 있다.
반응형
'TIL ✍️' 카테고리의 다른 글
TIL #124 : Spring Data Redis에서 Lua Script 사용하기 (1) | 2024.11.18 |
---|---|
TIL #122 : 읽기전용/쓰기전용DB를 @Transactional의 readOnly로 구분하기 (0) | 2024.11.16 |
TIL #121 : 스프링 배치 5버전에서 멀티 dataSource 중 하나 지정하기 (0) | 2024.11.16 |
TIL #120 : 멀티 데이터소스 환경에서 이중 커넥션 점유 막기 (1) | 2024.11.15 |
TIL #119 : Jacoco 테스트 커버리지 항목에 롬복이 생성한 코드 무시하기 (0) | 2024.11.13 |