IT/Live Coding

[springBoot] spring batch simpleReader insert other table(ํ…Œ์ŠคํŠธ ์˜์ƒ & ์†Œ์Šค์ฝ”๋“œ ํฌํ•จ)

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2023. 11. 10.

์•„๋ž˜ ํฌ์ŠคํŒ…์—์„œ ์ด์–ด์ง„ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

[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

 

๋Œ“๊ธ€