์๋ ํฌ์คํ ์์ ์ด์ด์ง ๋ด์ฉ์ ๋๋ค.
[springBoot] spring batch jpa simpleDbReader (feat. simple Reader)
์๋ ํฌ์คํ ์์ ์ด์ด์ง ๋ด์ฉ์ ๋๋ค. [springBoot] Simple Spring Batch Tasklet(feat. simple) ์คํ๋ง ๋ฐฐ์น๋ฅผ ์ด์ฉํ ์ ๋ง ๊ฐ๋จํ ๋ก๊ทธ ์ฐ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ๊ธฐ๋ณธ tasklet๋ถ๋ถ๊ณผ meta table ์ฐ๋ํด์ ๋ ์ง parameter ๋ฐ
yaga.tistory.com
dept ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ด์ง ๊ฐ๊ณต ํ dept2 ํ ์ด๋ธ์ ์ ์ฅํ๋ ๋จ์ํ ์์
JpaPageJob2 ๐ค
package com.lsy.sample.springbatchvideo.batch;
import com.lsy.sample.springbatchvideo.domain.Dept;
import com.lsy.sample.springbatchvideo.domain.Dept2;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.ItemProcessor;
import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.database.JpaItemWriter;
import org.springframework.batch.item.database.JpaPagingItemReader;
import org.springframework.batch.item.database.builder.JpaPagingItemReaderBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManagerFactory;
@Slf4j
@RequiredArgsConstructor
@Configuration
// dept ํ
์ด๋ธ์์ ๋ฐ์ดํฐ ์ฝ์ด์์ "NEW_" ์ ๋์ด ๋ถ์ฌ์ dept2 ํ
์ด๋ธ์ ์ ์ฅํ๋ ์์
public class JpaPageJob2 {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
private final EntityManagerFactory entityManagerFactory;
//chunkSize๋งํผ ํ๊ธฐ ์ํจ(๋ก์ง ์ง๊ธฐ ๋๋ฆ)
private int chunkSize = 10;
@Bean
public Job JpaPageJob2_batchBuild() {
return jobBuilderFactory.get("jpaPageJob2")
.start(jpaPageJob2_step1())
.build();
}
@Bean
public Step jpaPageJob2_step1() {
return stepBuilderFactory.get("jpaPageJob2_step1")
.<Dept, Dept2>chunk(chunkSize)
.reader(jpaPageJob2_dbItemReader())
.processor(jpaPageJob2_processor())
.writer(jpaPageJob2_dbItemWriter())
.build();
}
private ItemProcessor<Dept, Dept2> jpaPageJob2_processor() {
return dept -> {
// ๊ฐ๊ณตํ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธ
return new Dept2(dept.getDeptNo(), "NEW_" + dept.getDName(), "NEW_" + dept.getLoc());
};
}
// reader
@Bean
public JpaPagingItemReader<Dept> jpaPageJob2_dbItemReader() {
return new JpaPagingItemReaderBuilder<Dept>()
.name("jpaPageJob2_dbItemReader")
.entityManagerFactory(entityManagerFactory)
.pageSize(chunkSize)
.queryString("SELECT d FROM Dept d order by dept_no asc")
.build();
}
// writer
public JpaItemWriter<Dept2> jpaPageJob2_dbItemWriter() {
JpaItemWriter<Dept2> jpaItemWriter = new JpaItemWriter<>();
jpaItemWriter.setEntityManagerFactory(entityManagerFactory);
return jpaItemWriter;
}
}
Dept2, DeptRepository2๋ ๊ธฐ์กด ํด๋์ค ๊ทธ๋๋ก ๋ณต๋ถ ํ๊ณ ํด๋์ค๋ช ๋ง 2๋ฅผ ๋ถ์
๊ธฐ์กด ๋ด์ฉ์์ processor ์ถ๊ฐ๋จ
๊ฐ์ธ ์คํฐ๋ ๊ธฐ๋ก์ ๋ฉ๋ชจํ๋ ๊ณต๊ฐ์ด๋ผ ํ๋ฆฐ์ ์ด ์์ ์ ์์ต๋๋ค.
ํ๋ฆฐ ์ ์์ ๊ฒฝ์ฐ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค.
reference: https://www.youtube.com/watch?v=wy99cPHlMlA&list=PLogzC_RPf25HRSG9aO7qKrwbT-EecUMMR
๋ค์ ๋ด์ฉ
[springBoot] spring batch simpleTextReader (feat. file)
์๋ ํฌ์คํ ์์ ์ด์ด์ง ๋ด์ฉ์ ๋๋ค. [springBoot] spring batch simpleReader insert other table( feat. JPA) ์๋ ํฌ์คํ ์์ ์ด์ด์ง ๋ด์ฉ์ ๋๋ค. [springBoot] spring batch jpa simpleDbReader (feat. simple Reader) ์๋ ํฌ์คํ ์
yaga.tistory.com
๋๊ธ