728x90
반응형
SMALL

Chunk Processing의 마지막 단계로 Item을 쓰는 단계이다. ItemReaderItemProcessor를 거쳐 처리된 Item을 Chunk 단위만큼 처리한 뒤 이를 ItemWriter에 전달한다. ItemWriterItem 1개가 아니라, 데이터의 묶음인 Item List를 처리한다. ItemWriter가 쓰기를 하는 대상은 그 어떤 것도 될 수 있다. 파일이나, RDBMS, NoSQL에 데이터를 쓸 수도 있고, 다른 API를 호출할 수도 있다.

@FunctionalInterface
public interface ItemWriter<T> {
    void write(@NonNull Chunk<? extends T> chunk) throws Exception;
}

 

ItemWriter 또한, Spring Batch에서 개발자들이 많이 사용할 것들을 미리 만들어 줬다. 대표적인 것들은 다음과 같다.

  • JdbcBatchItemWriter
  • JpaItemWriter

 

ItemWriterList로 처리할까?

ItemReaderread()ItemProcessorprocess()는 아래와 같이 데이터 1개를 반환한다.

O process(@NonNull I item) throws Exception;
T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException;

 

근데 왜 ItemWriterList로 처리할까? ItemWriter는 대부분 쓰기 작업이 일어난다. 이런 쓰기 작업을 건별로 처리하면 효율이 떨어지고 성능에 문제가 되는 경우가 많다. 예를 들어, ItemWriter에서 DatabaseINSERT를 한다고 하면, 1000개의 데이터를 한번에 저장하는 것과 개별 트랜잭션으로 1개씩 저장하는 것은 많은 성능 차이를 만든다. 그렇기 때문에 ItemWriterList로 처리한다고 보면 된다.

 

그럼에도 불구하고, 건별로 처리하고자 할 경우가 있으면 List를 받아서, 요소마다 건별로 처리하도록 구현할 수도 있다.

 

정리를 하자면

이번에는 ItemWriter에 대해 알아보았다. Chunk Processing의 마지막 단계인 ItemWriter. 다음에는 Listener라는 것을 알아보자!

728x90
반응형
LIST

'Spring Batch' 카테고리의 다른 글

이커머스 포인트 배치를 구현해보기  (2) 2024.11.21
Listener  (1) 2024.10.09
ItemProcessor  (2) 2024.10.09
ItemReader  (1) 2024.10.09
Chunk Processing  (5) 2024.10.09

+ Recent posts