Step은 실질적인 배치 처리를 정의하고 제어하는 데 필요한 모든 정보가 들어 있는 도메인 객체이다.
Job을 처리하는 실질적인 단위
모든 Job은 1개 이상의 Step을 가진다.
JobRepository는 배치 처리 정보를 담고 있는 메커니즘이다.
어떤 Job이 실행되었으며 몇 번 실행되었고 언제 끝났는지 등 배치 처리에 대한 메타데이터를 저장한다.
예: Job 하나가 실행되면 JobRepository에서는 배치 실행에 관련된 정보를 담고 있는 도메인인 JobExecution을 생성한다.
JobRepository는 StepExecution도 저장소에 저장하며 전체 메타데이터를 저장/관리하는 역할을 수행한다.
배치 처리 과정을 하나의 단위로 만들어 표현한 객체
하나의 job 안에는 여러 step이 있다. 각 step을 배치의 기본 흐름대로 구현하다.
Job 객체를 만드는 빌더는 여러 개 있다. 여러 빌더를 통합 처리하는 공장인 JobBuilderFactory로 원하는 Job을 쉽게 만들 수 있다.
Job은 Step 또는 Flow 인스턴스의 컨테이너 역할을 하기 때문에 생성하기 전에 인스턴스를 전달받는다.
JobInstance는 배치에서 Job이 실행될 때 하나의 Job 실행 단위이다.
논리적으로 Job을 실행한다.
JobParameters를 이용해 구분
하루에 한 번씩 배치의 Job이 실행된다면, 각각의 Job을 JobInstance라고 부를 수 있다.
오늘 Job을 실행했는데 실패했다면 다음날 동일한 JobInstance를 가지고 다시 실행하게 된다.
Job 실행이 실패하면 JobInstance가 끝난 것으로 간주하지 않기 때문이다.
그러면, 이 하나의 JobInstance는 어제 실패한 JobExecution과 오늘의 성공한 JobExecution 두 개를 가지게 된다.
즉, 하나의 JobInstance는 여러 개의 JobExecution을 가지게 된다.
JobExecution은 JobInstance에 대한 실행 시도에 대한 객체
1월 1일에 실행한 JobInstacne가 실패하여 재실행을 하여도 동일한 JobInstance를 실행시키지만 이 2번에 실행에 대한 JobExecution은 개별로 생기게 됩니다. JobExecution는 이러한 JobInstance 실행에 대한 상태,시작시간, 종료시간, 생성시간 등의 정보를 담고 있다.
SimpleJobBuilder start(Step step);
Step을 추가해서 가장 기본이 되는 SimpleJobBuilder를 생성
JobFlowBuilder start(Flow flow);
Flow를 실행할 JobFlowBuilder를 생성
JobFlowBuilder flow(Step step);
Step을 실행할 JobFlowBuilder를 생성
JobInstance는 Job의 실행 단위이다. JobParameters 객체로 JobInstance를 구별한다. JobParameters는 JobInstance 구별 외에도 개발자 JobInstacne에 전달되는 매개변수 역할도 하고 있다.
JobParameters는 String, Double, Long, Date 4가지 형식을 지원한다.
https://jojoldu.tistory.com/325?category=902551
https://minholee93.tistory.com/entry/Spring-Batch-Batch-Job?category=924031
https://hororolol.tistory.com/513