-> 시작 -> BATCH_JOB_INSTANCE에 동일한 JOB_NAME과 JOB_KEY를 가진 row가 있는지 확인. 찾으면 JobInstance must not already exist 에러 메세지 출력 후 종료 -> BATCH_JOB_INSTANCE에 row 생성 -> BATCH_JOB_EXECUTION에 BATCH_JOB_INSTANCE_ID를 가진 가장 마지막 row가 있는지 확인. -> 찾으면 Completed 상태가 아닐 경우에만 재시작. 그 외엔 이미 끝난 작업을 다시 시작하려고 하는거니까 에러 메세지 출력 후 종료 -> 못 찾으면 BATCH_JOB_EXECUTION에 row 생성 -> Step들 실행 -> 종료
두 번째 설명대로 동일한 Job을 동일한 JOB_KEY로 실행하면 이미 작업이 끝난 상태라서 실행이 불가하다. 그래서 Job을 재사용하기 위해서 Job 파라미터에 현재 시간같이 그때그때마다 달라지는 값을 넣는다.
Job 실행 내용을 담고 있다. Job의 실패 + 성공 횟수만큼 row가 생성된다.
Job 파라미터가 여기에 저장된다. IDENTIFYING 컬럼은 BATCH_JOB_INSTANCE.JOB_KEY에 포함이 될지 말지를 결정한다.
Job 안에 있는 컴포넌트들 (tasklet, step 등) 이 정보를 교환해야 할 때가 있다. 그럴 때 JOB_EXECUTION_CONTEXT를 사용해 정보를 넣거나 빼올 수가 있다. 그런 정보들이 저장되는 테이블이다.
Step 실행 내용을 담고 있다. JOB_EXECUTION과 마찬가지로 Step의 실패 + 성공 횟수만큼 row가 생성된다.
Step 안에 있는 컴포넌트들 (reader, processor, writer 등) 이 정보를 교환 할 때 해당 테이블에 저장된다.
이클립스에서 Maven Dependencies -> spring-batch-core-4.2.1.RELEASE.jar -> org.springframework.batch.core 패키지 안에 보면 디비 종류별로 스크립트들이 만들어져 있다. 내용을 복사해서 직접 테이블을 만들어 사용할 수도 있다.
