Spring Batch

Spring Batch 도메인 Joblnstance

NEWDODORIPYO 2022. 8. 19. 13:53

Joblnstance 기본 개념

  • Job 이 실행될 때 생성되는 Job의 논리적 실행 단위 객체로서 고유하게 식별 가능한 작업 실행을 나타낸다
  • Job 의Job의 설정과 구성은 동일하지만 Job 이 실행되는 시점에 처리하는 내용은 다르기 때문에 Job의 실행을 구분해야 함
    • 예를 들어 하루에 한 번 씩 배치 Job이 실행된다면 매일 실행되는 각각의 Job을 JobInstance 로 표현합니다

Joblnstance 생성 및 실행

  • 처음 시작하는 Job+JobParameter 일 경우 새로운 Joblnstance 생성
  • ⭐⭐이전과 동일한 Job+JobParameter으로 실행할 경우 이미 존재하는 JobInstance 리턴
    • 내부적으로 JobName + jobKey(JobParameter 의 해시값)를 가지고 JobInstance객체를 얻음
  • Job 과는 1 : M 관계
    • Job의 구성과 내용은 동일하지만 JobParameter 가 다르다면 매일매일 실행될 때 마다 새롭게 생성되기때문

BATCH_JOB_INSTANCE 테이블과 매핑

  • ⭐⭐JOB_NAME(Job)과 JOB_KEY(JobParameter )가 동일한 데이터는 중복해서 저장할 수 없음
    • 실행 도중에 동일한 데이터가 있다면 오류를 던짐

Job의 실행 구조

1. run으로 실행이 되고 파라미터로 Job와 parameters를 가진다.

2.JobRepository 에서 실행된 run을 DB에서 확인해본다.

3.DB 확인 결과 Key 값인 Job와 Parameters 가 존재한다면 5번으로 이동 하나라도 다르다면 4번으로 이동한다.

4.DB 확인 결과 Key 값인 Job와 Parameters 가 존재 안한다면 새로운 JobInstance 를 생성한다.

5.DB 확인 결과 Key 값인 Job 와 Parameters 가 존재한다면 기존 JobInstance를 리턴한다.

새로운 JobInstance 생성

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

Spring Batch 도메인 JobExecution  (0) 2022.08.22
Spring Batch 도메인 JobParameters  (0) 2022.08.19
Spring Batch 도메인 Job  (0) 2022.08.19
Spring Batch 테이블 의미  (0) 2022.08.18
Spring Batch의 기본 구조와 DB 연결  (0) 2022.08.17