Spring/Spring Batch
-
10. 스프링배치 플로우 컨트롤 하기Spring/Spring Batch 2024. 12. 10. 17:38
이전까지는 데이터를 읽고 저장하는 순서대로 처리하는 배치 작업에 대해 알아봤다. 이번에는 배치 작업에서 여러 step을 정의하고 조건에 따라 순서대로 실행하거나 특정 step을 건너 뛸 수 있는 Spring Batch의 Flow Controller에 대해 알아보자 Flow 컨트롤 방법next: 현재 Step이 성공적으로 종료되면 다음 Step으로 이동한다.from: 특정 Step에서 현재 Step으로 이동한다.on: 특정 ExitStatus에 따라 다음 Step을 결정한다.to: 특정 Step으로 이동한다.stop: 현재 Flow를 종료한다.end: FlowBuilder를 종료한다.Flow 컨트롤nextnext는 Start 스텝이 수행하고 난 뒤, next 스텝으로 이동하게 된다.next는 계속해서 추가..
-
9. 입맛에 맞는 배치 처리를 위한 Custom ItemReader/ItemWriter 구현Spring/Spring Batch 2024. 12. 10. 17:07
이전 글에서는 ItemReader와 ItemWriter를 구현하는 방법에 대해 다뤘습니다. 기본 제공되는 ItemReader와 ItemWriter로 충분하지 않거나 복합한 쿼리를 수행하는 경우, 비지니스 로직에 맞게 Custom ItemReader와 ItemWriter 구현이 필요합니다. 이럴 땐, QueryDsl을 이용하여 Custom하게 작성 할 수 있습니다. 허나 문제가 있습니다.Spring Batch는 공식적으로 QuerydslItemReader를 지원하지 않습니다. 이를 위해서는 AbstractPagingItemReader를 상속하여 QuerydslPagingItemReader를 생성해야 합니다. Spring Batch ItemReader/ItemWriter 지원 목록QuerydslPaging..
-
8. CompositeItemProcessor 으로 여러단계에 걸쳐 데이터 Transform하기Spring/Spring Batch 2024. 12. 2. 18:03
CompositeItemProcessor는 Spring Batch에서 제공하는 클래스로, 여러 ItemProcessor를 하나로 결합하여 순차적으로 데이터를 처리할 수 있게 해줍니다. CompositeItemProcessor를 사용하여 여러개의 ItemProcessor간의 체이닝이 가능합니다. 하나의 ItemProcessor에 여러 작업을 하도록 구현 할 수 있지만, Processor 하나에 역할이 커지고 책임이 많아 지기 때문에 작은 사이즈의 Processor로 구현 한 뒤에 CompositeItemProcessor로 체이닝을 통해 사용합니다. 또한, Processor를 재사용하여 다른 Job에서도 활용할 수 있습니다. 다양한 ItemProcessor를 조합하여 원하는 처리 과정을 구현할 수 있다는 장..
-
7. MyBatisPagingItemReader로 DB내용을 읽고, MyBatisItemWriter로 DB에 쓰기Spring/Spring Batch 2024. 11. 18. 19:51
MyBatis는 자바 기반의 SQL Mapper로, 애플리케이션에서 데이터베이스와 상호작용하기 위한 도구입니다. 주로 SQL 문을 직접 작성하고 이를 자바 코드와 연결하는 데 사용됩니다. 1. MyBatisItemReader MyBatisPagingItemReader Spring Mybatis에서 제공하는 ItemReader 인터페이스를 구현하는 클래스이다.MyBatis의 Object Relation Mapper를 이용하며 다음과 같은 특징을 가지고 있다.장점:간편한 설정: MyBatis 쿼리 매퍼를 직접 활용하여 데이터를 읽을 수 있어 설정이 간편하다.쿼리 최적화: MyBatis의 다양한 기능을 활용하여 최적화된 쿼리를 작성할 수 있다.동적 쿼리 지원: 런타임 시 조건에 따라 동적으로 쿼리를 생성할 수..
-
5. JdbcPagingItemReader로 DB내용을 읽고, JdbcBatchItemWriter로 DB에 쓰기Spring/Spring Batch 2024. 11. 5. 17:38
이전에는 csv 파일을 읽고 쓰는 것에 배웠습니다. 이번에는 DB에서 데이터를 읽고 CSV 파일로 쓰거나 CSV 파일을 읽고 DB에 저장하는 방법에 대해 알아보자. 1. JdbcPagingItemReaderJdbcPagingItemReader는 Spring Batch에서 제공하는 ItemReader로, 데이터베이스로부터 데이터를 페이지 단위로 읽는다.대규모 데이터 처리 효율성: 메모리 사용량을 최소화하고 커밋 간격을 설정하여 대규모 데이터를 효율적으로 처리할 수 있다.쿼리 최적화: SQL 쿼리를 직접 작성하여 최적화된 데이터 읽기가 가능하다.커서 제어: 데이터베이스 커서를 사용하여 데이터 순회를 제어할 수 있다.2. 쿼리 Provider 생성하기@Beanpublic PagingQueryProvider q..
-
4. FlatFileItemReader로 단순 파일 읽고, FlatFileItemWriter로 파일에 쓰기Spring/Spring Batch 2024. 11. 4. 17:49
CSV 파일을 읽고 내용을 집계하여 CSV 파일로 쓰도록 FlatFileItemReader와 FlatFileItemWriter에 대해 알아보자 1.FlatFileItemReaderFlatFileItemReader는 Spring Batch에서 제공하는 기본적인 ItemReader로, 텍스트 파일로부터 데이터를 읽습니다.고정 길이, 구분자 기반, 멀티라인 등 다양한 형식의 텍스트 파일을 지원하며, 다음과 같은 장점을 가집니다.간단하고 효율적인 구현: 설정 및 사용이 간편하며, 대규모 데이터 처리에도 효율적입니다.다양한 텍스트 파일 형식 지원: 고정 길이, 구분자 기반, 멀티라인 등 다양한 형식의 텍스트 파일을 읽을 수 있습니다.확장 가능성: 토크나이저, 필터 등을 통해 기능을 확장할 수 있습니다.사용처: 고..
-
3.SpringBatch ChunkModel과 TaskletModelSpring/Spring Batch 2024. 10. 21. 01:36
SpringBatch에서 데이터 처리 단위인 ChuckModel과 TaskletModel의 차이점에 대해 알아보고자 한다. 1. Chunk ModelChunk Model은 처리할 데이터를 일정단위(청크) 로 처리하는 방식이다ChunkOrientedTaskLet은 Spring Batch에서 제공하는 TaskLet 인터페이스의 구현체Chunk size 만큼 ItemReader, ItemProcessor, ItemWrite 처리하며, commit-interval이라는 설정값을 이용하여 조정이 가능Chunk는 최대 Size만큼의 크기를 가진다. 예를 들어 20개의 소스를 처리해야하고, Chunk Size가 2인 경우 Chunk는 2개씩 처리되기 때문에 총 10번의 반복이 필요하다. 즉 10번의 트랜잭션을 탄다..
-
2.SpringBatch 코드 설명 및 아키텍처 알아보기Spring/Spring Batch 2024. 10. 20. 22:27
앞선 과정에서 SpringBatch 프로젝트를 구성 및 실행을 해보았습니다.이번에는 Job, step에 대해 알아보고 SpringBatch 아키텍처에 대해 학습해보도록 하겠습니다.1.Spring Batch 아키텍처JobSpring Batch에서 일괄 적용을 위한 일련의 프로세스를 요약하는 단일 실행 단위가 된다. StepJob을 구성하는 처리단위이다.하나의 Job에는 여러 Step이 들어갈 수 있다. 1: N 구조로 되어있다.하나의 Job에 여러 Step을 재사용, 병렬화, 조건분기 등을 수행할 수 있다.Step은 tasklet 모델 / chunk 모델의 구현체가 탑재되어 실행된다.JobLauncherJob을 수행하기 위한 인터페이스이다.JobLauncher는 사용자에 의해서 직접 수행된다.자바 커맨드를..