Spring Batch ItemWriter에 List 전달하기


• Springboot-batch에서 writer에 List를 전달하는 예제를 진행하였다. 이를 위해 Sales 데이터를 파싱하여 Tax 데이터를 저장하는 spring batch를 만들었다.
• ItemWriter를 JpaItemWriter를 사용하였고, reader에서 읽은 데이터(Sales)를 processor를 거쳐 List<Tax>로 전환한 뒤, writer에서 DB에 저장하였다.
• `Sales`를 등록하고 배치를 돌린 후, `Tax`가 9개 등록되었는지 확인하는 코드를 실행했지만, `Not an entity:class java.util.Arrays$ArrayList`라는 에러가 발생했다.
• 이는 `write` 메소드에 할당되는 `List`가 `chunk` size만큼 T 데이터를 받는데, T에 `ArrayList<Tax>`가 할당되고 `ArrayList`는 `Entity` 클래스가 아니기 때문에 오류가 발생한 것으로, 이를 해결하기 위해 `JpaItemWriter`의 `write`메소드를 오버라이딩 하는 `JpaItemListWriter`를 만들었다.

북마크
공유하기
신고하기