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 |