728x90
반응형
이 문서는 추후 다시 볼 목적으로 정리한 글입니다.
source
JdbcCursorItemReader NamedParameter 사용 예제
핵심은 Sql 에 NamedParameterUtils 을 사용해서 named parameter 를 변환.
@Bean public JdbcCursorItemReader<Person> itemReader() { String sql = "select * from person where id = :id and name = :name"; Map<String, Object> namedParameters = new HashMap<String, Object>() {{ put("id", 1); put("name", "foo"); }}; return new JdbcCursorItemReaderBuilder<Person>() .name("personItemReader") .dataSource(dataSource()) .rowMapper(new BeanPropertyRowMapper<>(Person.class)) .sql(NamedParameterUtils.substituteNamedParameters(sql, new MapSqlParameterSource(namedParameters))) .preparedStatementSetter(new ListPreparedStatementSetter(Arrays.asList(NamedParameterUtils.buildValueArray(sql, namedParameters)))) .build(); }
JdbcCurItemReader 간략히 설명
- 배치 프로그램에서 데이터를 한 번에 읽어서 메모리에 올리면 OOM (Out Of Memory) 가 발생할 수 있다.
- 이를 해결하기 위해 데이터를 select 해오기 위해 Connection 을 계속해서 맺은 상태에서 데이터를 계속해서 streaming 방식으로 끌어오는 것.
- 쉽게 설명하면 ResultSet 에서 next() 를 생각하면 됨.
reference
'Spring > batch' 카테고리의 다른 글
spring-batch RunIdIncrementer 정리 (0) | 2020.09.01 |
---|---|
Spring Batch ORA-08177 (0) | 2020.08.18 |
spring boot, spring batch 정리 - 1편 환경 구성 (spring boot, spring batch, gradle, multi project) (0) | 2020.07.11 |
spring boot, spring batch 정리 - 5편 대용량, low latency 를 위해 어떤 ItemReader 가 좋은가? (spring-batch 병렬 처리) (0) | 2020.07.11 |
spring boot, spring batch 정리 - 3편 repeat step 예제 (파라미터만 변경해서 실행) (0) | 2020.07.08 |
댓글