출처
- 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다.
목차
- Spring Batch - 14. 배치 초기화 설정 (application.properties)
- Spring Batch - 13. JobLauncher
- Spring Batch - 12. JobRepository
- Spring Batch - 11. ExecutionContext
- Spring Batch - 10. StepContribution
- Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블
- Spring Batch - 08. Step
- Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블
- Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블
- Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블
- Spring Batch - 04. JobLauncher
- Spring Batch - 03. Job
- Spring Batch - 02. Batch 에서 사용하는 Table
- Spring Batch - 01. @EnableBatchProcessing
JobRepository
Batch 작업 중에 생성되거나 변경되는 메타데이터들을 저장하는 저장소 역할
JobRepository는 스프링 배치의 핵심 컴포넌트 중 하나로, Job을 실행하거나 재시작할 때 사용되는 메타데이터를 관리합니다. 이 메타데이터에는 Job의 실행 상태, Job의 실행에 필요한 파라미터, 실행 시간 등의 정보가 포함됩니다.
JobRepository는 Job의 실행 상태를 추적하고, Job이 실행되는 동안 발생하는 예외를 처리하고, 재시작을 위해 이전 실행 정보를 보관합니다.
- Job 이 언제 수행됐고, 언제 끝났으며, 몇 번 실행됐고 실행에 대한 결과 등의 배치 작업 실행과 관련된 모든
Meta Data
를 저장한다. - JobLauncher, Job, Step 구현체 내부에서 CRUD 기능을 처리한다.
JobRepository 인터페이스
JobRepository 인터페이스는 JobInstance 와 JobExecution 을 생성하거나 기존에 생성된 객체가 을 경우 가져와 상태를 업데이트 하는 메소드를 지원한다.
public interface JobRepository { |
JobRepository 설정
@EnableBatchProcessing 를 선언하면 JobRepository 가 자동으로 Bean 으로 등록됩니다.
BatcConfigurer 인터페이스를 구현하거나 BasicBatchConfigurer 를 상속해서 JobRepository 설정을 커스터마이징 할 수 있습니다.
JDBC 방식으로 설정 - JobRepositoryFactoryBean
- 내부적으로 AOP 기술을 통해 트랜잭션 처리를 해주고 있다.
- 트랜잭션 isolation 의 기본값은 SERIALIZEBLE 로 최고 수준, 다른 레벨 (READ_COMMITED, REPEATABLE_READ) 로 지정이 가능하다.
- 메타테이블의 Table Prefix 를 변경할 수 있다.
In Memory 방식으로 설정 - MapJobRepositoryFactoryBean
- 성능 등의 이유로 도메인 오브젝트를 굳이 데이터 베이스에 저장하고 싶지 않은 경우
- 보통 Test 나 프로토타입의 빠른 개발이 필요할 때 사용한다.
|
JobRepository 설정 변경
- BatcConfigurer 를 구현하거나 BasicBatchConfigurer 를 상속을 통해 JobRepository 설정을 변경할 수 있다.
- JobRepositoryFactoryBean 을 통해 DataSource , Transaction , Isolation Level 등을 설정할 수 있다.
|