사부작사부작
JdbcPagingItemReader와 JdbcBatchItemWriter 본문
JdbcPagingItemReader 클래스
먼저 JdbcPagingItemReader와 flatfileItemReader의 상속 관계를 비교해보겠습니다.
### JdbcPagingItemReader
AbstractItemStreamItemReader<T> (implements ItemStream, ItemReader<T>)
└── AbstractItemCountingItemStreamItemReader<T>
└── AbstractPagingItemReader<T>
└── JdbcPagingItemReader<T>
### flatfileItemReader
AbstractItemStreamItemReader<T> (implements ItemStream, ItemReader<T>)
└── AbstractItemCountingItemStreamItemReader<T>
└── FlatFileItemReader<T>
AbstractItemCountingItemStreamItemReader<T> 는 아이템 수를 카운트하고 기본적인 상태관리 기능을 제공해주는 클래스입니다. 이 클래스를 바로 상속받아 csv 등의 flat 파일 형태의 데이터를 읽어오는 책임을 담당하는 클래스가 flatfileItemReader<T> 입니다.
이와 비슷하게 AbstractPagingItemReader<T> 는 AbstractItemCountingItemStreamItemReader<T> 를 상속받아서 페이징 기능을 추가하여 대용량 데이터를 읽어오게 추상화한 클래스입니다. JdbcPagingItemReader<T>는 AbstractPagingItemReader<T> 클래스를 상속해서 JDBC를 통해 데이터베이스에서 페이징 단위로 데이터를 읽어오는 구체 클래스입니다.
간단히 말하면 JdbcPagingItemReader<T>는 JDBC를 통해 데이터를 페이징 단위로 읽어오는 역할을 담당하게 됩니다.
### JdbcPagingItemReader의 주요 구성요소
- DataSource: 데이터베이스 연결 정보를 설정한다.
- PagingQueryProvider: 데이터를 읽을 SQL 쿼리를 설정한다.
- RowMapper: SQL 쿼리 결과를 도메인 객체(Item)로 변환하는 역할을 한다.
- PageSize: 한 페이지에 포함될 아이템 수를 설정한다.
- FetchSize : 한 번에 읽어올 레코드 수를 지정하여 성능을 관리한다
- ReadListener: 읽기 시작, 종료, 오류 발생 등의 이벤트를 처리할 수 있도록 한다.
- SaveState : 리더의 상태를 저장할지 여부를 설정하여 배치 작업의 재시작 가능성을 지원한다.
JdbcPagingItemReader 클래스
JdbcBatchItemWriter<T>는 Spring Batch에서 제공하는 ItemWriter 구현체입니다. 주로 데이터베이스에 대량의 데이터를 삽입하거나 업데이트할 때 사용합니다. JDBC를 기반으로 동작하며, SQL 문을 통해 데이터베이스에 데이터를 추가합니다.
### JdbcBatchItemWriter의 주요 구성요소
- DataSource: 데이터베이스 연결 정보를 지정한다.
- SqlStatementCreator: INSERT 쿼리를 생성하는 역할을 한다.
- PreparedStatementSetter: INSERT 쿼리의 파라미터 값을 설정하는 역할을 한다.
- ItemSqlParameterSourceProvider: Item 객체를 기반으로 PreparedStatementSetter에 전달할 파라미터 값을 생성하는 역할을 한다.
'스터디' 카테고리의 다른 글
| Custom ItemReader/ItemWriter 구현방법 알아보기 (1) | 2024.12.09 |
|---|---|
| JpaPagingItemReader, JpaItemWriter (2) | 2024.11.12 |
| 스프링 배치 3주차 (0) | 2024.10.22 |
| 스프링 배치 스터디 2주차 (0) | 2024.10.14 |