Spring Batch : JobRepository 관련 정리

    Spring Batch : JobRepository

    SpringBatch는 DB 스키마를 통해 Job, Step의 실행 결과를 저장하기도 하고 실행에 필요한 여러 인스턴스들이 있다. 뿐만 아니라 이런 것들을 하기 위해서는 CRUD가 필수적이다. 이처럼 Spring Batch에서 사용하는 메타 정보들(DB 스키마 저장 정보)의 CRUD를 위한 클래스가 제공된다. 바로 JobRepository다.

    • JobRepository는 배치 작업 중의 정보를 저장한다.
    • JobRepository는 Job, Step 실행 정보의 CRUD 기능을 처리해준다.

    위에서 볼 수 있듯이, JobRepository는 JobLauncher, Job, Step등에 CRUD를 해준다. 또한, DB랑도 연결이 되어있는데 이것은 결국 마지막 실행 정보 같은 것들을 확인하고 Job, Step들에 알려주기 위함이다. 예를 들어 조금만 열어보면 알겠지만, LastExecution 정보를 읽어와서 이 Job이 실행 가능한지를 살펴보는 경우도 있다. 이런 일들을 하기 위해 JobRepository는 DB와 연결이 되어있다. 

     

    JobRepository 설정

    @EnableBatchProcessing 어노테이션을 선언하면, JobRepository는 자동으로 스프링 빈으로 등록된다. 만약에 사용자 설정 JobRepository를 사용하고 싶다면 BatchConfigurer / BasicBatchConfigurere를 구현 / 상속 받아 사용하면 된다. JobRepository는 DB용과 내장 메모리 용으로 설정이 나누어진다. 

    JDBC 방식으로 설정 → JobRepositoryFactoryBean

    • AOP 기술로 트랜잭션을 처리해줌 (@Transactional 처럼)
    • 트랜잭션 격리 수준은 Serializable. 더 낮은 격리 수준으로 지정 가능.
    • 메타테이블의 PreFix를 변경할 수 있음. 기본 값은 Batch임. 

    댓글

    Designed by JB FACTORY