1. 기본 이해
1-1. JobExecution 클래스
Job이 실행되는 동안 생성이 된다.
job의 실행 정보, 상태 정보를 담고있다.
1-2 StepExecution 클래스
Step도 실행되는 동안 StepExecution이 생성된다.
step의 실행 정보, 상태 정보
1-3 실행 정보, 상태 정보 저장
저장되어 있는 table을 스프링 배치에서 기본적으로 제공하고 있다.
스크립트를 가지고 적용할 수 있다.
스크립트를 가지고 테이블을 생성해서 실행정보, 상태정보를 저장하면 된다.
실행정보 상태정보를 메타데이터라고 한다.
2. DB
job이 몇시에 실행이 되었으며,
최종 종료된 상태는 어떤 상태인지
실행정보와 상태정보를 database에 저장하는 단계가 있다.
2-1 db 저장의 이점
그래야 우리가 job이 끝나고 향후에
1. job에 대한 통계
2. 정산 작업
3. 오류 또는 예외가 발생했을 때 어떤 오류와 예외가 발생했는지를 저장된 정보를 기반으로 확인할 수 있다.
4. 과거, 현재의 실행에 대한 세세한 정보, 실행에 대한 성공과 실패 여부 등을 일목요연하게 관리함으로서 배치운용에 있어 리스크 발생시 빠른 대처 가능
2-2. DB 스키마 제공
- 스프링 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step, JobParameters)의 정보들을 저장, 업데이트, 조회할 수 있는 스키마 제공
- 파일 위치 : external libraries -> srping-batch-core -> /org/springframework/batch/core/schema-*.sql
- 여기에 각각의 데이터 베이스 종류별로 테이블을 생성할 수 있는 스크립트가 존재한다.
- db와 연동할 경우 필수적으로 메타 테이블이 생성 되어야 함.
2-3. 스키마 생성 설정
수동 생성과 자동 생성하는 두가지의 방법이 있다.
- 수동 생성 - 쿼리 복사 후 직접 실행
- 자동 생성 - spring.batch.jdbc.initialize-schema 설정 (application.properties 또는 application.yml에 설정해야함)
- ALWAYS
- 스크립트가 항상 실행
- RDBMS 설정이 되어 있을 경우 내장 DB 보다 우선적으로 실행
- EMBEDDED : 내장 DB일 때만 실행되며 스키마가 자동 생성됨, 기본값
- NEVER
- 스크립트 항상 실행 안함
- 내장 DB일 경우 스크립트가 생성이 안되기 때문에 오류 발생
- 운영에서 수동으로 스크립트 생성 후 설정하는 것을 권
https://docs.spring.io/spring-batch/docs/3.0.x/reference/html/metaDataSchema.html
3. 수동으로 스키마 생성 과정 살펴보기
3-1. 수동 생성 쿼리 확인
위에서 확인한 것과 같이 아래 위치에서 테이블 생성 쿼리를 확인할 수 있다.
external libraries -> srping-batch-core -> /org/springframework/batch/core/schema-*.sql
쿼리 확인
3-2. mysql 설치 -> schema 이름 설정
3-3. intellij에서 db 연동
3-4. intellij 에서 query 날리는 방법
4. Application properties 설정
기본 active profiles 설정은 local
spring:
profiles:
active: local
---
spring:
config:
activate:
on-profile: local
datasource:
hikari:
jdbc-url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
driver-class-name: org.h2.Driver
batch:
jdbc:
initialize-schema: embedded
---
spring:
config:
activate:
on-profile: mysql
datasource:
hikari:
jdbc-url: jdbc:mysql://localhost:3306/springbatch?useUnicode=true&characterEncoding=utf8
username: root
password: 1111
driver-class-name: com.mysql.cj.jdbc.Driver
batch:
jdbc:
initialize-schema: never
5. intellij active profiles 변경
6. DB 스키마에 대한 이해
job key는 job parameter를 hash 값으로 변경한 값이다.
'강의 > 스프링배치' 카테고리의 다른 글
스프링 배치 도메인 이해 - JobExecution (0) | 2022.12.27 |
---|---|
스프링 배치 도메인 이해 - Job + JobInstance + JobParameter (0) | 2022.12.27 |
스프링 배치 - DB 스키마 생성 (2) (0) | 2022.12.26 |
스프링 배치 시작 - 연습용 배치 생성 (0) | 2022.12.24 |
spring batch - 프로젝트 구성 및 의존성 설정 (0) | 2022.12.24 |