spring batch
-
20. ItemWriter (DB)BackEnd/Spring Batch 2021. 12. 31. 18:30
JdbcBatchItemWriter JdbcCursorItemReader 설정과 마찬가지로 datasource를 지정하고, sql 속성에 실행할 쿼리를 설정합니다. JDBC의 Batch 기능을 사용하여 bulk insert/update/delete 방식으로 처리합니다. 단건 처리가 아닌 일괄처리이기 때문에 성능에 이점을 가집니다. API package io.springbatch.springbatchlecture; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; imp..
-
19. ItemWriter (Json)BackEnd/Spring Batch 2021. 12. 31. 17:55
JsonFileItemWriter 객체를 받아 JSON String으로 변환하는 역할을 합니다. API package io.springbatch.springbatchlecture; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.launch.support..
-
18. ItemWriter (XML)BackEnd/Spring Batch 2021. 12. 31. 17:30
StaxEventItemWriter XML 쓰는 과정은 읽기 과정에 대칭적입니다. StaxEventItemWriter는 Resource, marshaller, rootTagName가 필요합니다. API package io.springbatch.springbatchlecture; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactor..
-
17. ItemWriter (File)BackEnd/Spring Batch 2021. 12. 31. 17:00
FlatFileItemWriter 2차원 데이터(표)로 표현된 유형의 파일을 처리하는 ItemWriter입니다. 고정 위치로 정의된 데이터 필드나 특수 문자에 의해 구별된 데이터의 행을 기록합니다. Resource와 LineAggregator 두 가지 요소가 필요합니다. LineAggregator Item을 받아서 String으로 변환하여 리턴합니다. FieldExtractor를 사용해서 처리할 수 있으며, 구현체로는 PassThroughLineAggregator, DelimitedLineAggregator, FormatterLineAggregator가 있습니다. FieldExtractor 전달 받은 Item 객체의 필드를 배열로 만들고 배열을 합쳐서 문자열을 만들도록 구현하도록 제공하는 인터페이스입니다..
-
16. ItemReaderAdapterBackEnd/Spring Batch 2021. 12. 31. 00:50
배치 Job 안에서 이미 존재하는 DAO나 다른 서비스를 ItemReader 안에서 사용하고자 할 때 위임 역할을 합니다. setTargetObject에 존재하는 서비스를 setTargetMethod에 호출하려는 메서드명을 설정하면 됩니다. package io.springbatch.springbatchlecture; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annota..
-
15. ItemReader (DB)BackEnd/Spring Batch 2021. 12. 31. 00:25
배치 애플리케이션은 실시간적 처리가 어려운 대용량 데이터를 다루며 이 때 DB I/O의 성능문제와 메모리 자원의 효율성 문제를 해결할 수 있어야 합니다. 스프링 배치에서는 대용량 데이터 처리를 위해 Cusor Based / Paging Based 두 가지 처리 방식을 제시하고 있습니다. Cursor Based 처리 JDBC ResultSet의 기본 메커니즘 사용 현재 행에 커서를 유지하며 다음 데이터를 호출하면 다음 행으로 커서를 이동하며 데이터 반환이 이루어지는 Streaming 방식의 I/O ResultSet이 open 될 때마다 next() 메소드가 호출되어 Database의 데이터가 반환되고 객체와 매핑이 이루어짐 DB Connection이 연결되면 배치 처리가 완료될 때까지 데이터를 읽어오기 때..
-
14. ItemReader (Json)BackEnd/Spring Batch 2021. 12. 30. 22:30
JsonItemReader Json 데이터의 Parsing과 Binding을 JsonObjectReader 인터페이스 구현체에 위임하여 처리하는 ItemReader입니다. JacksonJsonObjectReader와 GsonJsonObjectReader 두 가지 구현체를 제공합니다. package io.springbatch.springbatchlecture; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.c..
-
13. ItemReader (XML)BackEnd/Spring Batch 2021. 12. 30. 22:10
JAVA XML API로는 DOM 방식, SAX 방식, Stax 방식(Streaming API for XML)이 있습니다. DOM 방식 문서 전체를 메모리에 로드한 후 Tree 형태로 만들어서 데이터를 처리하는 방식(pull 방식)으로 엘리먼트 제어는 유연하나 문서 크기가 클 경우 메모리 사용이 많고 속도가 느립니다. SAX 방식 문서의 항목을 읽을 때 마다 이벤트가 발생하여 데이터를 처리하는 방식(push 방식)으로 메모리 비용이 적고 속도가 빠른 장점은 있으나 엘리멘트 제어가 어렵습니다. StAX 방식 DOM과 SAX의 장점과 단점을 보완한 API 모델로서 push와 pull을 동시에 제공합니다. XML 문서를 읽고 쓸 수 있는 양방향 파서기를 지원하며, XML 파일의 항목에서 항목으로 직접 이동하면..