Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

사부작사부작

JdbcPagingItemReader와 JdbcBatchItemWriter 본문

스터디

JdbcPagingItemReader와 JdbcBatchItemWriter

민철킴 2024. 11. 5. 17:54

 

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