이 게시글은 인프런 정수원님의 강의를 보고 복습하며 작성한 글입니다. JdbcBatchItemWriter JdbcBatchItemWriter는 JdbcBatch의 bulk insert / update / delete 연산을 활용하는 Writer다. bulk 연산이 무엇인지 처음에는 감이 안 잡혔는데 아래와 같다고 한다. # 기본 SQL insert into customer(id, birthDate) values(val1, val5); insert into customer(id, birthDate) values(val2, val6); insert into customer(id, birthDate) values(val3, val7); insert into customer(id, birthDate) value..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다 ItemReaderAdatper 스프링 배치에서는 여러가지 ItemReader를 전달해준다. 그런데 이 ItemReader를 통해서는 이미 존재하고 있는 DAO / 다른 서비스를 ItemReader에서 사용할 수는 없다. 그래서 Spring Batch는 중간에 Adapater 패턴을 도입해서 기존 서비스의 값을 ItemReader로 읽어올 수 있도록 도와준다. ItemReaderAdapater는 자바의 Reflection 기술을 사용한다. ItemReaderAdapter에 불러올 객체와 메서드 명을 셋팅해주면, ItemReaderAdapater는 Invoker를 만들고, invoker를 invoke로 타겟 객체의 타겟 메서드를 불러오는 역할을 해..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. 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..