๐ JobRepository
์ง๋ ์๊ฐ์๋ Spring Batch์ ExecutionContext์ ์ดํด๋ณด์์ต๋๋ค.
ExecutionContext๋ Spring Batch ํ๋ ์์ํฌ์์ ์ง์ํ๋ key/value ํ์์ ๊ณต์ ๊ฐ์ฒด๋ก Job์ ์คํํ๋ฉด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋๋ค.
์๋ก ๋ค๋ฅธ Job ๊ฐ์๋ ๊ณต์ ๊ฐ ์๋์ง๋ง, ๋์ผํ Job ๋ด์ ์๋ก ๋ค๋ฅธ Step ์ฌ์ด์๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ Batch Job ๋ด์ Step ์ฌ์ด์์ ๋ฐ์ดํฐ ๊ณต์ ๋ฐ ์กฐ์์ด ํ์ํ๋ค๋ฉด ExecutionContext๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฒ ์๊ฐ์๋ Spring Batch JobRepository์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ์กด์ Job & JobParameters๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐํํ ํ JobInstance์ ์ฌ๋ถ์ ๋ฐ๋ผ ์๋ก ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค๊ณ ํ์๋๋ฐ์, ์ด๋ฌํ ๊ณผ์ ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด JobRepository ์ ๋๋ค.
๋ํ Job, Step ๋ฑ์ ์์ ์ด ์ํ๋ ๋ Spring Batch์ ๋ฉํ ๋ฐ์ดํฐ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ CRUDํ๋ ๊ฒ๋ JobRepository์ ๋๋ค.
๐ ํด๋น ํฌ์คํ ์ ๋ชฉํ
- Spring Batch JobRepository ํ์ ํ๊ธฐ
๐ JobRepository
๊ธฐ๋ณธ ๊ฐ๋
- ์ธํฐํ์ด์ค๋ก ๋ฐฐ์น ์์ ์ค ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์ ์ฅ์ ์ญํ
- JobLauncher, Job, Step ๊ตฌํ์ฒด์ ๋ํ CRUD ์์
- Job์ ์ํ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ meta data๋ฅผ ์ ์ฅ
- ๊ตฌํ์ฒด๋ SimpleJobRepository
SimpleJobRepository
SimpleJobRepository์๋ ๊ฐ๊ฐ์ Dao ๊ฐ์ฒด๊ฐ ์กด์ฌํ์ฌ Job, Step ๋ฑ์ด ์คํ๋ ๋๋ง๋ค ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
์ ~Dao ๊ฐ์ฒด์ Bean์ JobRepositoryFactoryBean ํด๋์ค๊ฐ ์์ฑํฉ๋๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | ใ
@Override protected JobInstanceDao createJobInstanceDao() throws Exception { JdbcJobInstanceDao dao = new JdbcJobInstanceDao(); dao.setJdbcTemplate(jdbcOperations); dao.setJobIncrementer(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_SEQ")); dao.setTablePrefix(tablePrefix); dao.afterPropertiesSet(); return dao; } @Override protected JobExecutionDao createJobExecutionDao() throws Exception { JdbcJobExecutionDao dao = new JdbcJobExecutionDao(); dao.setJdbcTemplate(jdbcOperations); dao.setJobExecutionIncrementer(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_EXECUTION_SEQ")); dao.setTablePrefix(tablePrefix); dao.setClobTypeToUse(determineClobTypeToUse(this.databaseType)); dao.setExitMessageLength(maxVarCharLength); dao.afterPropertiesSet(); return dao; } @Override protected StepExecutionDao createStepExecutionDao() throws Exception { JdbcStepExecutionDao dao = new JdbcStepExecutionDao(); dao.setJdbcTemplate(jdbcOperations); dao.setStepExecutionIncrementer(incrementerFactory.getIncrementer(databaseType, tablePrefix + "STEP_EXECUTION_SEQ")); dao.setTablePrefix(tablePrefix); dao.setClobTypeToUse(determineClobTypeToUse(this.databaseType)); dao.setExitMessageLength(maxVarCharLength); dao.afterPropertiesSet(); return dao; } @Override protected ExecutionContextDao createExecutionContextDao() throws Exception { JdbcExecutionContextDao dao = new JdbcExecutionContextDao(); dao.setJdbcTemplate(jdbcOperations); dao.setTablePrefix(tablePrefix); dao.setClobTypeToUse(determineClobTypeToUse(this.databaseType)); dao.setSerializer(serializer); if (lobHandler != null) { dao.setLobHandler(lobHandler); } dao.afterPropertiesSet(); // Assume the same length. dao.setShortContextLength(maxVarCharLength); return dao; } | cs |
JobRepository ์ค์
JobRepository ์ค์ ์ Spring Batch ์ค์ ์ด๋ ธํ ์ด์ ์ธ @EnableBatchProcessing๋ฅผ ์ ์ธํ๋ฉด ์๋์ผ๋ก JobRepository Bean์ด ์์ฑ์ด ๋ฉ๋๋ค.
@EnableBatchProcessing ์ด๋ ธํ ์ด์ ์ ํตํด ์์ฑ๋๋ ๊ณผ์ ์ Spring Batch ์์กด์ฑ ์ค์ ํฌ์คํ ์์ ์ ๋ฆฌ๋ฅผ ํ์๋๋ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- @EnableBatchProcessing -> @Import(BatchConfigurationSelector.class) -> SimpleBatchConfiguration
JobRepository ์ปค์คํ
๊ธฐ์กด Spring Batch๊ฐ ์ ๊ณตํ๋ ์ค์ ์ธ ์ปค์คํ ํ์ฌ JobRepository Bean์ ์์ฑํ ๊ฒฝ์ฐ BatchConfigurer ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ฑฐ๋, BasicBatchConfigurer ํด๋์ค๋ฅผ ์์๋ฐ์ ์ปค์คํ ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ๋ฌธ์
- https://docs.spring.io/spring-batch/docs/current/reference/html/index-single.html
- https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98/dashboard
'Spring > Spring Batch' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Batch (9) JobParametersValidator (0) | 2022.11.13 |
---|---|
Spring Batch (8) JobLauncher (0) | 2022.11.11 |
Spring Batch (6) ExecutionContext (0) | 2022.11.05 |
Spring Batch (5) Step, StepExecution (0) | 2022.11.03 |
Spring Batch (4) Job, JobInstance, JobParameters, JobExecution (0) | 2022.11.01 |
๋๊ธ