Spring Batch에는 본인이 생성한 적 없는 이상한 Database Table 녀석들을 만날 수있다.
Spring Batch Gradle 의존성을 추가하고 새로고침 하면 External Libraries에 spring-batch-core녀석을 만날 수 있다.
하위 디렉토리 org/springframework/batch/core 위치에 보면 많은 종류의 Database를 위한 SQL을 만날 수 있다.
Spring Batch가 실행될 때 여기 있는 sql 중에 본인이 설정한 Database유형에 맞는 SQL을 실행하여 Spring Batch를 위한 Table들을 생성하게 되는 것이다.
Table들을 생성하는 방법은 두가지가 있는데
1. 수동 생성
- 수동 생성은 말 그대로 본인의 Database에 맞는 SQL을 직접 복사해서 실행시키는 것이다.
위에서 본인의 Database에 맞는 SQL파일을 열어보면 Table 생성 SQL이 있다.
2. 자동 생성
- application.properties || application.yml 설정
- ALWAYS : SQL 항상 실행, DBMS 설정이 되어 있을 경우 설정되 Database로 우선 실행
- EMBEDDED : 내장 Database일 경우에만 실행 (default)
- NEVER : SQL 실행 하지 않음
Table엔 어떤 것들이 있는지 알아보자
BATCH_JOB_INSTANCE
- Batch Job의 인스턴스에 대한 정보를 저장
- JOB_INSTANCE_ID : 실행된 job을 고유하게 식별할 수 있는 key
- VERSION : 해당 data row가 update될 때 마다 1씩 증가하는 값
- JOB_NAME : 본인이 선언한 job_name
- JOB_KEY : 동일한 job_name의 job_instance를 구분하기 위해 job_parameters를 해시하여 생성한 값
BATCH_JOB_EXECUTION
- Batch Job 실행 정보를 저장
- JOB_EXECUTION_ID : Batch Job 실행 정보에 대한 고유한 식별 key
- VERSION : 해당 data row가 update될 때 마다 1씩 증가하는 값
- JOB_INSTANCE_ID (외래키) : BATCH_JOB_INSTANCE의 key값
- CREATE_DATE : Job 실행 (Job Execution) 이 생성된 시각
- START_DATE : Job 실행 (Job Execution) 이 시작된 시각
- END_DATE : Job 실행 (Job Execution) 이 종료된 시각
- STATUS : 실행 상태
- EXIT_CODE : 종료 상태
- EXIT_MESSAGE : STATUS가 FAIL일 경우 원인을 기록
- LAST_UPDATED : 실행 정보가 마지막으로 기록된 시간
BATCH_JOB_EXECUTION_PARAMS
- Job 실행(Execution) 시에 전달 된 paramters 정보를 저장
- JOB_EXECUTION_ID (외래키) : Batch Job 실행 정보에 대한 고유한 식별 key
- TYPE_CD : 전달 된 parameter의 데이터 타입 (String, Long, Double, Date)
- KEY_NAME : 전달 된 parameter의 key
- STRING_VAL : 전달 된 paramter (type이 String일 경우)
- DATE_VAL : 전달 된 paramter (type이 Date일 경우)
- LONG_VAL : 전달 된 paramter (type이 Long일 경우)
- DOUBLE_VAL : 전달 된 paramter (type이 Double일 경우)
BATCH_JOB_EXECUTION_CONTEXT
- Job 실행 컨텍스트 정보를 저장
- JOB_EXECUTION_ID (외래키) : Batch Job 실행 정보에 대한 고유한 식별 key
- SHORT_CONTEXT : SERIALIZED_CONTEXT의 버전 정보
- SERIALIZED_CONTEXT : 직렬화된 컨텍스트 정보
BATCH_STEP_EXECUTION
- Step의 실행정보를 저장
- VERSION : 해당 data row가 update될 때 마다 1씩 증가하는 값
- STEP_NAME : 본인이 설정한 step_name
- JOB_EXECUTION_ID(외래키) : Batch Job 실행 정보에 대한 고유한 식별 key
- START_TIME : 실행 (Step Execution) 시작 시간
- END_TIME : 실행 (Step Execution) 종료 시간
- STATUS : 실행 ( Step Execution) 상태
- COMMIT_COUNT : 트랜젝션 당 커밋 수
- READ_COUNT : 데이터를 읽어온 수
- FILTER_COUNT : 읽어온 데이터에서 필터링 된 수
- WRITE_COUNT : 저장된 데이터 수
- READ_SKIP_COUNT : 데이터를 읽어오다가 skip된 수
- WRITE_SKIP_COUNT : 데이터 저장 시에 skip된 수
- PROCESS_SKIP_COUNT : process 과정을 거치다가 skip된 수
- ROLLBACK_COUNT : rollback이 일어난 수
- EXIT_CODE : 실행 종료 코드
- EXIT_MESSAGE : STATUS가 FAIL일 경우 원인을 기록
- LAST_UPDATED : STEP 실행 정보가 마지막으로 기록된 시간
BATCH_STEP_EXECUTION_CONTEXT
- Step 실행 컨텍스트 정보를 저장
- STEP_EXECUTION_ID (외래키) : Step 실행 정보에 대한 고유한 식별 key
- SHORT_CONTEXT : SERIALIZED_CONTEXT의 버전 정보
- SERIALIZED_CONTEXT : 직렬화된 컨텍스트 정보
설명에 나오는 Job이니 Step이니 이런 것들은 다음에 알아보도록 할테니 '아 이런 게 있구나' 정도만 알고 넘어가자.
'Web > Spring' 카테고리의 다른 글
맨땅에 Spring Batch - Item (0) | 2024.01.16 |
---|---|
맨땅에 Spring Batch - Job 그리고 Step (0) | 2024.01.16 |
맨땅에 Spring Batch - 설정 (0) | 2024.01.16 |
맨땅에 Spring Batch (0) | 2024.01.16 |
Spring boot에서 mybatis mapper location 설정 (0) | 2022.10.25 |