Spring

SpringBatch 전용 DB 테이블

ZzangHo 2022. 2. 7. 22:11
728x90

스프링배치의 경우 작업 이력을 남기기 위한 기본 테이블을 미리 생성을 해주어야 한다.

테이블의 정보는 아래와 같다.

 

테이블 구조

 

테이블 설명

번호
분류
테이블 명 설명
1









JOB
BATCH_JOB_INSTANCE Job이 실행될 때 생성되는 JobInstance에 관한 정보를 저장
2 BATCH_JOB_EXECUTION JobInstance의 실행단위에 대한 실행횟수(1번 또는 1번이상)를 나타내는JobExecute에 관한 정보를 저장
매번 Job이 실행될 때마다 새로운 레코드가 쌓임
3 BATCH_JOB_EXECUTION_PARAMS JobParameter에 대한 모든 정보를 기록
JobParameter값에 따라 JobInstance가 생성되며 동일한 JobParameter값으로 JobApplication을 실행하면 BATCH_JOB_INSTANCE테이블에 기록되지 않음
4 BATCH_JOB_EXECUTION_CONTEXT 작업의 ExecutionContext와 관련된 모든 정보를 기록.
1개의 JobExecution에 각 JobExecutionContext가 있으며 특정 작업 실행에 필요한 모든 작업 레벨 데이터를 포함

5 BATCH_JOB_EXECUTE_SEQ 시퀀스 관리 테이블
6 BATCH_JOB_SEQ 시퀀스 관리 테이블
7



STEP
BATCH_STEP_EXECUTION JobExecution에 대한 Step객체 정보를 기록하며 Job내부에서 각각 실행되는 Step 정보를 순서대로 확인
8 BATCH_STEP_EXECUTION Step의 ExecutionContext와 관련된 모든 정보를 보유
StepExecution당 1개의 ExecutionContext가 있으며 특정 단계 실행을 위해 유지해야하는 모든 데이터가 포함되며 
일반적으로 JobInstance가 중지 된 위치에서 다시 시작할 수 있도록, 실패(Fail)이후 지점에 State를 나타냄
9 BATCH_STEP_EXECUTION_SEQ 시퀀스 관리 테이블

 

테이블 생성 방법(MySQL 기준)

IntelliJ기준으로 Ctrl + Shift + N을 눌러 File검색창을 띄운 뒤 schema-mysql로 검색을 하면 schema-mysql.sql파일이 나올 것이다. 해당 파일을 열어보면 위 테이블에 대한 ddl구문이 들어 있으니 내가 사용할 MySQL DB에 ddl구문을 실행 시켜 테이블을 생성해주면 된다.

'Spring' 카테고리의 다른 글

application.yml 여러개로 나누기  (0) 2022.12.14
stream API와 for-loop 성능차이  (0) 2022.02.07
SpringBatch  (0) 2022.02.07
application.yml로 환경 나누기  (0) 2022.01.28