2014-01-15 3 views
1

저는 스프링 배치와 관련하여 새로운 기능입니다. 나는 단순한 개념 증명 (proof-of-concept) 일을하고있다.스프링 - 배치 실행 간 데이터 공유

ItemReader가 : dateA 및 최대 날짜 (순간에 마지막 레코드) ItemProcessor 사이의 레코드 번호를 가져옵니다 : 도시 ItemWriter 당 행을 집계 : 데이터베이스에 결과를 기록

내 질문은 그 때 작업이 끝났 으면 다음 작업 실행 날짜가 dateA로 시작되도록 마지막 날짜를 유지하고 싶습니다. 나는 JobExecutionContext를 사용하여 데이터를 공유 할 수 있지만 두 번째 실행에서 dateA를 얻으려고했지만 값이 null임을 알고있다.

거기에 이전 작업 실행에서 기록 된 이전 날짜 값을 얻는 방법이 있습니까? 그리고 어떻게?

미리 감사드립니다.

답변

0

구현 방법에는 여러 가지가 있습니다. 가장 간단한 방법은 파일에 쓰고 다음 시작시 그 파일을 읽는 것입니다. 그러나 이것은 어떻게 든 더러운 것입니다. DB에 작성하거나 이미 db에있는 데이터로부터 최대 날짜를 반환하는 sql을 실행할 수도 있습니다. 기본적으로 나는 간단한 tasklet (비슷한 Tasklet to delete a table in spring batch)을 구현하여 sql을 실행하고 chunkContext에 최대 데이터를 추가한다.

+0

안녕하세요. 데이터는 이미 이전 작업 실행에서 업데이트 된 값을 얻는 적절한 방법이 있습니까? – tbo

+0

그냥 여기에 간단한 tasklet을 구현하십시오. http://stackoverflow.com/questions/7834304/tasklet-to-delete-a-table-in-spring-batch 최대 날짜를 반환하는 sql을 실행하고 chunkContext – user1121883

+0

좋은 접근 방식입니다. 리스너를 구현하고 beforeJob과 같은 것을 추가하여 값을 검색하고 afterJob을 추가하여 다음 작업에 대한 새 값을 유지하는지 궁금합니다. 내 질문은 이것이 동일한 거래에 속하는 것인가? 쓰기 작업? thx – tbo