이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. JpaPagingItemReader JpaPagingItemReader는 Paging 기반의 구현체다. EntityManagerFactory를 넘기고, EntityManager를 바탕으로 JPA 형식으로 쿼리를 날려 Item을 DB에서 읽어올 수 있다. 또한 JpaPagingItemReader는 JdbcPagingItemReader와 마찬가지로 doRead() 메서드에서 동기화 처리가 되어있기 때문에 멀티 쓰레드 환경에서도 안전하다. JpaPagingItemReader API @Bean public ItemReader customerItemReader() { HashMap paramValues = new HashMap(); paramValues..
이 글은 인프런 정수원님의 강의를 보고 복습하며 작성한 글입니다. JdbcPaingItemReader 기본 개념 JdbcPagingItemReader는 Paiging 기반의 JDBC 구현체다. Paging 기반이기 떄문에 OffSet / Limit을 설정해서 페이징 기능을 사용하는 SQL 쿼리문을 만들어줘야한다. 이 때, OffSet은 시작 페이지, Limit은 페이지 사이즈로 이해를 할 수 있다. JdbcPagingItemReader는 반드시 정렬 기준을 설정해줘야한다. JdbcPagingItemReader가 페이지 단위로 쿼리를 보내서 값을 가져오기 때문이다. JdbcPagingItemReader는 페이지 단위로 SQL 쿼리를 새로 만들어서 실행한다. 따라서 정합성 있는 데이터를 가져오기 위해서는 항..
이 글은 인프런의 정수원님의 강의를 복습하며 작성한 글입니다. JpaCusorItemReader 스프링 배치에서는 JPA를 활용한 Cursor 방식의 Itemreader를 제공한다. JPA에서는 Entity Manager를 활용해 DB와의 접근이 이루어지기 때문에 JPAItemReader를 사용할 때는 EntityManager를 할당해주어야 한다. JpaCursorItemReader의 API JpaCursorItemReader는 JpaCursorItemReaderBuilder를 통해 만들어진다. Builder는 JpaCursorItemReader의 설정값을 설정하기 위해 여러가지 API를 지원하고, 우리는 이 API를 통해 JpaCursorItemReader를 만들어야한다. name : JpaCursor..
이 게시글은 인프런 정수원님의 강의를 수강하고 복습하며 작성한 글입니다. JdbcCursorItemReader 기본 개념 JdbcCursorItemReader는 Cursor 기반의 JDBC 구현체다. ResultSet과 함께 사용되고, Data Source로부터 SQL을 통해 값을 불러온다. JdbcCursorItemReader는 쓰레드 안정성을 보장하지 않기 때문에 멀티 쓰레드 환경에서 사용한다면 동기화 처리를 통한 동시성 문제를 해결해줘야 한다. Cursor 기반이라는 것은 Cursor가 가리키는 지점에서 한번에 Fetch Size만큼 DB에서 메모리로 퍼올린다는 이야기다. Cursor를 기반으로 구현할 때는 Fetch Size와 Chunk Size를 맞춰주는 것이 좋다. 왜냐하면 Chunk Size..
이 글은 인프런 정수원님의 강의를 복습하며 정리한 글입니다. Step Execution 기본개념 Step Execution은 Step이 실행될 때 마다 생성됨. Step이 한번 실행될 때, 실행 중 발생 정보를 저장한 객체 Job이 재시작할 때, 기본적으로 성공한 Step은 재시작하지 않음. 따라서 재시작하지 않는 Step은 StepExecution이 생기지 않고, 재시작하는 Step은 StepExecution이 생성됨. StepExecution 중 하나라도 실패가 있으면, 관련된 JobExecution은 항상 실패. 모두 성공 시, Job Execution은 성공. DB 스키마 매핑 BATCH_STEP_EXECUTION 테이블과 매핑됨. JOB_EXECUTION과 STEP_EXECUTION은 1:M 맵..