본문 바로가기
반응형

스프링배치5

Spring Batch JpaCursorItemReader 도입되다. Spring Batch 4.3이 릴리즈 되면서 JpaCursorItemReader 가 도입되었습니다. (Spring Batch 4.3 release notes)그 전 버전까지 (~4.2.x)는 JpaCursorItemReader가 없었음을 의미하는데요. HibernateCursorItemReader는 존재하는데, 왜 JpaCursorItemReader는 여태 없었던 것이지? 라고 의문이 들 수 있습니다. 이는 JPA 스펙 때문인데, JPA 2.1 전까지는 데이터 스트리밍이 가능한 스펙이 별도로 없었습니다. 그래서 Hibernate의 상태 비저장 세션 (StatelessSession)과 유사한 개념이 JPA에는 없어서 Cursor 기능을 구현할 수 없었습니다. 상태 비저장 세션 (StatelessSessi.. 2021. 1. 25.
10. Spring Batch 가이드 - Spring Batch 테스트 코드 배치 애플리케이션이 웹 애플리케이션 보다 어려운 점을 꼽자면 QA를 많이들 얘기합니다. 일반적으로 웹 애플리케이션의 경우 전문 테스터 분들 혹은 QA 분들이 전체 기능을 검증을 해주시는 반면, 배치 애플리케이션의 경우 DB의 최종상태라던가 메세징큐의 발행내역 등 개발자들이 직접 확인해주는 것 외에는 검증 하기가 쉽진 않습니다. (별도의 어드민을 제공하는것도 포함입니다.) 더군다나 개발자가 로컬 환경에서 배치 애플리케이션을 수행하는 것도 많은 수작업이 필요합니다. 수정/삭제 등의 배치 애플리케이션이라면 한번 수행할때마다 로컬 DB의 데이터를 원복하고 다시 수행하는 작업을 반복해야 합니다. 이러다보니 당연하게 테스트 코드의 필요성이 많이 강조됩니다. 다행이라면 배치 애플리케이션은 웹 애플리케이션 보다 테스트.. 2019. 10. 17.
Spring Batch JPA에서 N+1 문제 해결 안녕하세요? 이번 시간엔 Spring batch에서 N+1 문제 해결을 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 1. 테스트 환경 프로젝트는 SpringBoot Batch + Lombok + Spock으로 구성됩니다. 스프링부트의 버전은 2.2.7 입니다. 해당 기술들이 처음이셔도 기존에 사용되던 기술과 크게 다르지 않기 때문에 보시는데 어려움이 없으실 것 같습니다. 다음은 기본적인 Entity와 Repository를 생성하겠습니다. 엔티티는 총 4개로 구성됩니다. 3개의 엔티티의 코드는 다음과 같습니다. (굳.. 2019. 4. 20.
7. Spring Batch 가이드 - ItemReader 앞의 과정들을 통해 Spring Batch가 Chunk 지향 처리를 하고 있으며 이를 Job과 Step으로 구성되어 있음을 배웠습니다. Step은 Tasklet 단위로 처리되고, Tasklet 중에서 ChunkOrientedTasklet을 통해 Chunk를 처리하며 이를 구성하는 3 요소로 ItemReader, ItemWriter, ItemProcessor가 있음을 배웠습니다. 즉, ItemReader & ItemWriter & ItemProcessor의 묶음 역시 Tasklet이란 이야기입니다. 이들의 묶음을 ChunkOrientedTasklet에서 관리하기 때문이죠. 이번 시간부터 이 3 요소를 차근차근 배워보겠습니다. 7-1. ItemReader 소개 Spring Batch의 Chunk Taskle.. 2018. 9. 14.
SpringBatch에서 ItemReader를 Mock객체로 교체하기 안녕하세요? 이번 시간엔 SpringBatch에서 ItemReader를 Mock객체로 교체하는 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 발단 스프링 배치로 테스트 코드를 짜다보면 정말 하기 싫은것이 ItemReader로 읽어올 데이터를 만드는 것입니다. 특히나 실제 업무에서 쓰다보면 수많은 필수값들과 엔티티 관계들로 인해 만들어야할 데이터가 많을 경우 더 그렇습니다. 이렇게 테스트 환경 구축이 힘들때는 역시나! Mock을 활용하면 좋다고 생각했습니다. ItemReader를 어떻게 Mocking할지 고민하.. 2017. 10. 17.

728x90
반응형