반응형
728x90
반응형
BATCH 테이블 Prefix 변경해보기
schema-postgresql.sql
- org.springframework.batch/spring-batch-core/4.3.5/b5ff5d227600df2ba087344160db2b8a38476cb3/spring-batch-core-4.3.5.jar!/org/springframework/batch/core/schema-postgresql.sql
위 파일의 쿼리를 가져와서, BATCH_ 부분을 SYSTEM_으로 변경해준다.
-- Autogenerated: do not edit this file
CREATE TABLE SYSTEM_JOB_INSTANCE (
JOB_INSTANCE_ID BIGINT NOT NULL PRIMARY KEY ,
VERSION BIGINT ,
JOB_NAME VARCHAR(100) NOT NULL,
JOB_KEY VARCHAR(32) NOT NULL,
constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY)
) ;
CREATE TABLE SYSTEM_JOB_EXECUTION (
JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY ,
VERSION BIGINT ,
JOB_INSTANCE_ID BIGINT NOT NULL,
CREATE_TIME TIMESTAMP NOT NULL,
START_TIME TIMESTAMP DEFAULT NULL ,
END_TIME TIMESTAMP DEFAULT NULL ,
STATUS VARCHAR(10) ,
EXIT_CODE VARCHAR(2500) ,
EXIT_MESSAGE VARCHAR(2500) ,
LAST_UPDATED TIMESTAMP,
JOB_CONFIGURATION_LOCATION VARCHAR(2500) NULL,
constraint JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID)
references SYSTEM_JOB_INSTANCE(JOB_INSTANCE_ID)
) ;
CREATE TABLE SYSTEM_JOB_EXECUTION_PARAMS (
JOB_EXECUTION_ID BIGINT NOT NULL ,
TYPE_CD VARCHAR(6) NOT NULL ,
KEY_NAME VARCHAR(100) NOT NULL ,
STRING_VAL VARCHAR(250) ,
DATE_VAL TIMESTAMP DEFAULT NULL ,
LONG_VAL BIGINT ,
DOUBLE_VAL DOUBLE PRECISION ,
IDENTIFYING CHAR(1) NOT NULL ,
constraint JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID)
references SYSTEM_JOB_EXECUTION(JOB_EXECUTION_ID)
) ;
CREATE TABLE SYSTEM_STEP_EXECUTION (
STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY ,
VERSION BIGINT NOT NULL,
STEP_NAME VARCHAR(100) NOT NULL,
JOB_EXECUTION_ID BIGINT NOT NULL,
START_TIME TIMESTAMP NOT NULL ,
END_TIME TIMESTAMP DEFAULT NULL ,
STATUS VARCHAR(10) ,
COMMIT_COUNT BIGINT ,
READ_COUNT BIGINT ,
FILTER_COUNT BIGINT ,
WRITE_COUNT BIGINT ,
READ_SKIP_COUNT BIGINT ,
WRITE_SKIP_COUNT BIGINT ,
PROCESS_SKIP_COUNT BIGINT ,
ROLLBACK_COUNT BIGINT ,
EXIT_CODE VARCHAR(2500) ,
EXIT_MESSAGE VARCHAR(2500) ,
LAST_UPDATED TIMESTAMP,
constraint JOB_EXEC_STEP_FK foreign key (JOB_EXECUTION_ID)
references SYSTEM_JOB_EXECUTION(JOB_EXECUTION_ID)
) ;
CREATE TABLE SYSTEM_STEP_EXECUTION_CONTEXT (
STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
SHORT_CONTEXT VARCHAR(2500) NOT NULL,
SERIALIZED_CONTEXT TEXT ,
constraint STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID)
references SYSTEM_STEP_EXECUTION(STEP_EXECUTION_ID)
) ;
CREATE TABLE SYSTEM_JOB_EXECUTION_CONTEXT (
JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
SHORT_CONTEXT VARCHAR(2500) NOT NULL,
SERIALIZED_CONTEXT TEXT ,
constraint JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID)
references SYSTEM_JOB_EXECUTION(JOB_EXECUTION_ID)
) ;
CREATE SEQUENCE SYSTEM_STEP_EXECUTION_SEQ MAXVALUE 9223372036854775807 NO CYCLE;
CREATE SEQUENCE SYSTEM_JOB_EXECUTION_SEQ MAXVALUE 9223372036854775807 NO CYCLE;
CREATE SEQUENCE SYSTEM_JOB_SEQ MAXVALUE 9223372036854775807 NO CYCLE;
CustomBatchConfigurer.java
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
import org.springframework.boot.autoconfigure.batch.BasicBatchConfigurer;
import org.springframework.boot.autoconfigure.batch.BatchProperties;
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Slf4j
@Configuration
public class CustomBatchConfigurer extends BasicBatchConfigurer {
private final DataSource dataSource;
protected CustomBatchConfigurer(BatchProperties properties, DataSource dataSource, TransactionManagerCustomizers transactionManagerCustomizers) {
super(properties, dataSource, transactionManagerCustomizers);
this.dataSource = dataSource;
}
/**
* JobRepository custom
* @return
* @throws Exception
*/
@Override
protected JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean();
jobRepositoryFactoryBean.setDataSource(dataSource); // 기본값 설정되고, 우리가 만든 파일도 따로 지정 가능
jobRepositoryFactoryBean.setTransactionManager(getTransactionManager()); // 스프링배치가 제공해줌
jobRepositoryFactoryBean.setIsolationLevelForCreate("ISOLATION_READ_COMMITTED");
jobRepositoryFactoryBean.setTablePrefix("SYSTEM_"); // 기본값 BATCH_
return jobRepositoryFactoryBean.getObject(); // JobRepository Type return
}
}
1) dataSource 설정
기본 DataSource를 설정했다. 우리가 만든 파일도 따로 지정 가능하다.
jobRepositoryFactoryBean.setDataSource(dataSource);
2) 스프링 배치가 제공해주는 TransactionManager 설정
getTransactionManager() 메서드를 호출한다.
jobRepositoryFactoryBean.setTransactionManager(getTransactionManager());
3) tabePrefix를 직접 변경한다.
위에서 쿼리를 실행하여, SYSTEM_으로 테이블을 모두 생성해주었다.
jobRepositoryFactoryBean.setTablePrefix("SYSTEM_"); // 기본값 BATCH_
결과
반응형