problem배치의 결과에 따라(특정조건) 배치를 반복 종료 할 때가 있다. 특정 조건에 따라 재시도(Retry) / 건너뛰기(Skip) 할 수 있다.solutionRepeat복잡한 청크 완료 조건: 기본적인 청크 크기 외에 다른 조건에 따라 반복을 제어할 수 있다.커스텀 반복 로직이 필요한 경우: 특정 작업을 여러 번 반복해야 할 때, 반복 횟수나 종료 조건을 직접 정의할 수 있다. 에러 처리 및 재시도 로직: 작업 중 오류가 발생했을 때(특정 조건에 충족하지 못했을 때), 일정 횟수만큼 재시도하거나 특정 조건이 충족될 때까지 반복하도록 설정할 수 있다. 스프링 배치는 RepeatTemplate 기본으로 제공하여 기능을 구현 시킬 수 있다.RepeatTemplate 인터셉터처럼 step 전 후에 적..
스프링 배치
problem스프링 배치를 실행 시키면 배치는 아래와 같이 관련된 테이블을 생성하는데,생성이 되지 않아 / 찾지 못해 생기는 에러이다. solution1. 자동생성application.properties 에 해당 옵션을 설정해주면 자동으로 관련 테이블이 생성된다.spring.batch.initialize-schema=always하지만 스프링 5.0 부터는 @EnableBatchProcessing 을 사용하면 위 옵션을 막아 생성이 안된다. 2. 직접 생성 위 방법으로 안된다면 직접 생성을 해주어야 한다.아래 링크를 확인하여 직접 생성해준다. https://soobysu.tistory.com/146 [오류노트] Spring Batch [ Could not obtain sequence value ]pro..
problem 저번 글에 addBatch에 대한 글을 적었는데 기초에 대한 정리 글이 없어서 적어본다. https://soobysu.tistory.com/131 [Spring Batch] addBatch로 다량 쿼리문 한번에 실행 (bulk insert) 결과 10만건 데이터 > JPA 27분 , addBatch 28초 Problem 엔터티 indexes 를 설정하고 검색최적화를 위해 더미데이터를 DB에 저장 하려고 하는데 10만건의 데이터를 넣는데 굉장히 많은 시간이 걸렸다. 어떻 soobysu.tistory.com solution 스프링 배치 구성 잡 런처 -> 잡 실행 시키는 주체 잡 -> 작업의 단위 ( 한개이상의 스텝으로 구성 되어있다 ) 스텝 -> 행위 ( 데이터 읽기 read , 데이터 작업..
결과 10만건 데이터 > JPA 27분 , addBatch 28초 problem 엔터티 indexes 를 설정하고 검색최적화를 위해 더미데이터를 DB에 저장 하려고 하는데 10만건의 데이터를 넣는데 굉장히 많은 시간이 걸렸다. 어떻게 하면 데이터를 더 빠르게 db에 저장 할 수 없을까 ? JPA를 통해 데이터를 DB에 보내면 save() 또는 saveAll() 해주면 엔터티마다 트랜젝션을 생성하고 커밋한다. 즉 건당 오버헤드(overhead)가 발생한다. solution 오버헤드가 일어나는곳을 한번에 묶어서 처리하면 되지 않을까 ? (중복제거) addBatch로 한번에 묶어서 커밋을 해보자. addBatch는 쿼리 실행을 하지 않고 쿼리 구문을 메모리에 올려두었다가, 실행 명령(executeBatch)이..