
Job, Step, Flow, Tasklet은 비지니스 로직을 실행하게끔 한다.
Job, Step, Flow, Tasklet을 실행할때 상태 정보와 실행 정보를 시점 마다(미리 존재하는게 아님) DB에 저장하기 위해서 생성되는 도메인이 JobInstance, JobExcution, StepExcution이다. 메타 데이터를 저장한다.
1. 기본 개념
- Job 이 실행될 때 생성되는 Job 의 논리적 실행 단위 객체로서 고유하게 식별 가능한 작업 실행을 나타냄
- Job 의 설정과 구성은 동일하지만 Job 이 실행되는 시점에 처리하는 내용은 다르기 때문에 Job 의 실행을 구분해야 함
- 예를 들어 하루에 한 번 씩 배치 Job이 실행된다면 매일 실행되는 각각의 Job 을 JobInstance 로 표현합니다.
- JobInstance 생성 및 실행
- 처음 시작하는 Job + JobParameter 일 경우 새로운 JobInstance 생성
- 이전과 동일한 Job + JobParameter 으로 실행 할 경우 이미 존재하는 JobInstance 리턴
- 내부적으로 JobName + jobKey (jobParametes 의 해시값) 를 가지고 JobInstance 객체를 얻음
- 이미 실행하는 거를 또 실행 할 필요가 없기 때문에 실행 실패
- Job 과는 1:M 관계
2. JobInstance는 BATCH_JOB_INSTANCE 테이블과 매핑
- JOB_NAME (Job) 과 JOB_KEY (JobParameter 해시값) 가 동일한 데이터는 중복해서 저장할 수 없음
3. Excample
| Job(일별 정산) | |
| JobInstance A | JobInstance B |
| Job = 일별 정산, JobParameters = 2022.08.26 | Job = 일별 정산, JobParameters = 2022.08.27 |
일별 정산이라는 잡이 실행 되면 JobInstance A가 생성 된다.
JobInstance A의 파라미터가 Job = 일별 정산, JobParameters = 2022.08.26로 실행 완료 했다면
다음에 일병 정산 잡을 실행할때는 같은 파라 미터를 사용 못한다.
JobInstance B는 JobParameters = 2022.08.27로 실행 해야한다.
- BATCH_JOB_INSTANCE
| JobInstance ID | Job Name | Job Key |
| 1 | 일별 정산 | 잡 파라미터의 해시 값 dklslkffi9s9f89fs |
| 2 | 일별 정산 | 잡 파라미터의 해시 값 45h5d45h45d7h6 |
출처 : 정수원님의 인프런 강의 - 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch
'Spring Batch' 카테고리의 다른 글
| 스프링 배치 이모저모 (0) | 2022.12.07 |
|---|---|
| 3 ) 코어 레이어의 컴포넌트 - 잡과 스텝 (0) | 2022.07.20 |
| 2 ) 스프링 배치 프레임워크 (0) | 2022.07.19 |
| 1 ) Job (0) | 2022.07.14 |