[Spring] 스프링 배치 ItemReader의 개념, (MybatisCursorItemReader, MybatisPagingItemReader 구현)

1. ItemReader란? 스프링 배치의 ItemReader는 다음과 같은 과정을 거쳐 데이터를 처리한다. 대부분의 데이터 형태는 이미 ItemReader로 제공하고 있기에 ItemReader, ItemStream 인터페이스 자체를 구현할 필요는 없다. ItemReader는 Chunk 기반 트랜잭션을 다루며 Cursor, Paging 가 대표적인 2가지 방식이다. 2. Cursor, Paging 형식 2-1. Cursor기반 ItemReader JDBC ResultSet의 기본 기능이다. ResultSet이 Open 될 때마다 데이터베이스의 데이터가 반환된다. 데이터베이스와 연결 맺은 후 데이터를 Streaming 방식으로 I/O이다. 현재 행에서Cursor를 유지하며 다음 데이터를 호출하면 Cursor를 한 칸씩 옮기면서 데이터를 가져온다. 하나의 Connection으로 배치가 끝날때까지 사용되기에 Batch가 끝나기 전에 데이터베이스와 애플리케이션의 연결이 먼저 끊어질 수 있어 데이터베이스와 SocketTimeout을 충분한 값으로 설정하여야 한다. 모든 결과를 메모리에 할당 하기 때문에 메모리 사용량이 많아진다. Chunk 사이즈 만큼의 트랜잭션 단위로 데이터를 처리한다. Cursor 기반 ItemReader 구현체 ...

October 19, 2023 · Jun Kang