inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

개요 및 아키텍처

JdbcCursorItemReader ,JdbcBatchItemWriter한개의 db에서 데이터 전환

702

object

작성한 질문수 1

-1

안녕하세요 JdbcCursorItemReader 와 JdbcBatchItemWriter를 이용해 기존 데이터를 변환해서 다른 테이블로 이관하는 테스트를 진행하고 있습니다. 근데 JdbcCursorItemReader 에서 select는 잘되는데 JdbcBatchItemWriter에서 insert쿼리를 날릴때 무한대기 현상이 발생하는거 같습니다.

@Bean
    public Job transferDBJob(JobRepository jobRepository, Step transferBookStep){
        return new JobBuilder("transferDBJob",jobRepository)
                .start(transferBookStep)
                .build();
    }

    @Bean
    public Step transferBookStep(JobRepository jobRepository, PlatformTransactionManager tm,
                                 JdbcPagingItemReader<TransSpecies> pagingSpeciesReader, ItemProcessor<TransSpecies, Species> transItemProcessor,
                                 JdbcBatchItemWriter<Species> transItemWriter) {
        return new StepBuilder("transferBookStep",jobRepository)
                .<TransSpecies,Species>chunk(10,tm)
                .reader(pagingSpeciesReader)
                .processor(transItemProcessor)
                .writer(transItemWriter)
                .build();
    }

    @Bean
    public JdbcPagingItemReader<TransSpecies> pagingSpeciesReader(DataSource dataSource,PagingQueryProvider createQueryProvider) {
        return new JdbcPagingItemReaderBuilder<TransSpecies>()
                .name("transSpeciesReader")
                .pageSize(10)
                .fetchSize(10)
                .dataSource(dataSource)
                .rowMapper(new BeanPropertyRowMapper<>(TransSpecies.class))
                .queryProvider(createQueryProvider)
                .build();
    }

    @Bean
    public PagingQueryProvider createQueryProvider(DataSource dataSource) throws Exception {
        SqlPagingQueryProviderFactoryBean queryProvider = new SqlPagingQueryProviderFactoryBean();
        queryProvider.setDataSource(dataSource);
        queryProvider.setSelectClause("SPECIESKEY,AUTHOR,TITLE");
        queryProvider.setFromClause("FROM TRANSSPECIES");
        Map<String, Order> sortKeys = new HashMap<>(1);
        sortKeys.put("SPECIESKEY", Order.ASCENDING);
        queryProvider.setSortKeys(sortKeys);

        return queryProvider.getObject();
    }
    @Bean
    public ItemProcessor<TransSpecies,Species> transItemProcessor(){
        return transSpecies ->{
            Species species = new Species();
            species.setRecKey(transSpecies.getSpeciesKey());
            species.setTitle(transSpecies.getTitle());
            species.setAuthor(transSpecies.getAuthor());
            return species;
        };

    }
    @Bean
    public JdbcBatchItemWriter<Species> transItemWriter(DataSource dataSource){
        return new JdbcBatchItemWriterBuilder<Species>()
                .sql("INSERT INTO SPECIES VALUES (:recKey, :author, :title)")
                .beanMapped()
                .dataSource(dataSource)
                .build();
    }

현재 작성한 간단하 코드이며

로그에는 현재 이렇게 무한대기 상태에 놓이게 됩니다.

확인 부탁드립니다 ㅠㅠ

spring-boot spring-batch

답변 1

0

정수원

TransSpecies, Species 클래스 및 DB 테이블 정보가 없네요

원할한 테스트를 위해 필요한 소스 가급적 전체 소스를 올려 주시기 바랍니다.

스프링 배치 버전 질문

0

122

1

소스코드가 어디에 있나요?

0

96

2

트랜잭션 예외

0

92

1

질문이 있습니다.

0

130

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

125

2

여러 JOB 설정하는법

0

150

2

강의 자료 다른 방법 있을까요?

0

154

1

JobExecution과 JobExecutionContext와의 관계

0

186

2

특정 job만 실행

1

252

1

Batch 성능 질문

0

153

1

ItemReaderAdapter 종료

0

80

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

179

2

Spring Batch 배포 질문

0

246

2

spring batch 버전

0

236

2

retry count 관련 질문

0

172

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

330

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

235

2

Multithread step과 AsyncItemProcessor

0

203

2

job 재실행

0

251

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

183

1

Multi-threaded-step과 Partitioning 차이 확인

0

175

2

jdbcCursorReader, jdbcPagingReader 질문

0

146

1

step muti-thread 질문

0

111

1

itemSteam open update close 질문

0

112

1