Spring Batch

Spring Batch 도메인 StepExecution

NEWDODORIPYO 2022. 8. 24. 09:16

기본개념

  • Step에 대한 한 번의 시도를 의미하는 객체로서 Step 실행 중에 발생한 정보들을 저장하고 있는 객체
    • 시작시간 , 종료시간 , 상태(시작됨 , 완료 , 실패) , commit count , rollback count 등의 속성을 가짐
  • Step 이 매번 시도될 때마다 생성되며 각 Step 별로 생성된다
    • Step 별로 생성된 StepExecution 끼리는 공유가 안된다
  • Job 이 재시작 하더라도 이미 성공적으로 완료된 Step 은 재 실행되지 않고 실패한 Step 만 실행된다
  • 이전 단계 Step 이 실패해서 현재 Step을 실행하지 않았다면 StepExecution을 생성하지 않는다. Step 이 실제로 시작됐을 때만 StepExcution을 생성한다

JobExecution 과의 관계

  • Step의 StepExecution 이 모두 정상적으로 완료되어야 JobExecution 이 정상적으로 완료된다.
  • Step의 StepExecution 중 하나라도 실패하면 JobExecution 은 실패한다

 

BATCH_STEP_EXECUTION 테이블과 매핑

  • JobExecution 와 StepExecution 은 1:M의 관계
  • 하나의 Job 에 여러 개의 Step으로 구성했을 경우 각 StepExecution 은 하나의 JobExecution을 부모로 가진다.

BATCH_STEP_EXECUYION

StepExecution ID Step Name JobExecution ID  Status
1 Step1 1 COMPLETED
2 Step2 1 COMPLETED
3 Step3 2 COMPLETED
4 Step4 2 FAILED

BATCH_JOB_EXECUYION

JobExecution ID JobInstance ID Start Time End Time Status
1 1 2022.08.18.12:00 2022.08.18.12:10 COMPLETED
2 2 2022.08.19.12:00 2022.08.19.12:10 FAILED

StepExecution 과정 그림으로 보기

 

'Spring Batch' 카테고리의 다른 글

Spring Batch 도메인 ExecutionContext  (0) 2022.08.30
Spring Batch 도메인 StepContribution  (0) 2022.08.30
Spring Batch 도메인 Step  (0) 2022.08.23
Spring Batch 도메인 JobExecution  (0) 2022.08.22
Spring Batch 도메인 JobParameters  (0) 2022.08.19