JDBC를 조회하는 방법은 크게 두가지이다.
1. Cursor 기반 조회(ResultSet에 cursor)
- 배치 처리가 완료될때까지 DB Connection이 연결된다.
- DB Connection 빈도가 낮아 성능이 좋은 반면, 긴 Connection 시간이 필요하다.
- 하나의 Connection에서 처리 되기 때문에 Thread Safe하지 않다.
2. Paging 기반 조회
- 페이징 단위로 DB Connection 을 연결
- DB Connection 빈도가 높아 비교적 성능이 낮은 반면, 짧은 Connection 유지시간 필요
- 페이징 단위의 결과만 메모리에 할당하기 때문에[ 비교적 더 적은 메모리를 사용한다.
각각 JdbcCursorItemReader, JdbcPagingItemReader를 사용한다.
두 클래스 모두 객체에 beanMapper, rowMapper 설정이 가능하다.
private JdbcCursorItemReader<Person> jdbcCursorItemReader() throws Exception{
JdbcCursorItemReader<Person> itemReader =
new JdbcCursorItemrReaderBuilder<Person>().name("jdbcCursorItemReader")
.dataSource(dataSource)
.sql("select id, name, age, address from person")
.rowMapper((rs, rowNum) -> new Person(rs.getInt(1),
rs.getString(2),
rs.getString(3),
rs.getString(4))).build();
itemReader.afterPropertiesSet();
return itemReader;
dataSource는 스프링 빈을 주입받아 사용하는 dataSource이다.
'Spring Batch' 카테고리의 다른 글
Spring Batch - csv 파일 읽기 (0) | 2022.12.26 |
---|---|
Spring Batch - csv파일 쓰기 (0) | 2022.12.23 |
SpringBatch ChunkSize를 JobParameters 로 사용하기 (1) | 2022.12.19 |
Spring Batch Chunk 기초학습 (0) | 2022.12.19 |
Spring Batch 동작 순서 (Step) (0) | 2022.12.16 |