Spring Batch - ItemReader
·
Spring
FlatFileItemReader - DB가 아닌 Resource에서 데이터를 읽어올 수 있도록 구현된 구현체 - 2차원 데이터료 표현된 유형의 파일을 처리하는 ItemReader - Resource와 LineMapper 두 가지 요소가 필요함 Resource- FileSystemResource - new FileSystemResource("resource/path/config.xml")=> 파일 시스템에서 자원을 읽어올 때 사용- ClassPathResource - new ClassPathResource("classpath:path/config.xml")=> 클래스패스에서 자원을 읽어올 때 사용 LineMapper- 파일의 라인 한 줄을 Object로 변환해서 FlatFileItemReader로 리턴함..
Spring Batch - Chunk
·
Spring
Chunk- 여러 개의 아이템을 하나로 묶은 하나의 덩어리, 블록- 한번에 하나씩 아이템을 입력받아, chunk단위의 덩어리로 만든 후, 트랜잭션을 처리함. 즉 chunk단위의 commit과 rollback이 이루어짐 - 대용량 데이터를 한번에 처리하는게 아니라, 청크 단위로 쪼개어서 작업함 => 이렇게 청크 단위로 쪼개서 작업하는 이유는,1. 메모리 효율성 : 한꺼번에 너무 많은 데이터를 메모리에 올리면 메모리 부족 문제가 발생할 수 있음. 청크 단위로 적절한 양의 데이터를 읽어 메모리 사용량을 줄일 수 있음. 2. 트랜잭션 관리 : 부분적으로 처리하다가, 오류가 나면 롤백 처리 하는 등 일관성 유지 가능3. 쓰기 효율성 : ItemWriter에서는 청크를 모아서 한 번에 쓰기 작업을 처리하는데, 데이..
Spring Batch - Flow
·
Spring
Flow- Step이 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있는 Job, FlowJobBuilder에 의해 생성됨- 내부적으로 SimpleFlow 객체를 포함하고 있으며, Job 실행시 호출함.   public Job batchJob() { return jobBuilderFactory.get("batchJob") .start(Flow) .next(Step or Flow or JobExcecuitonDecider) .on(String pattern) .to(Step) .stop() / fail() / end() / stopAndRestart() .end() .build();} - start(Flow) => 이처럼 ..
스프링 배치 - Job / Step
·
Spring
배치 초기화 설정JobLauncherApplicationRunner- 스프링 배치 작업을 시작하는 ApplicationRunner로서, BatchAutoConfiguration (Spring Boot 3.3.0 API)  에서 생성됨- ApplicationRunner의 구현체로, 어플리케이션이 정상적으로 구동되자마자 실행됨- 기본적으로 빈으로 등록된 모든 job을 실행시킴import org.springframework.batch.core.Job;import org.springframework.batch.core.JobParametersBuilder;import org.springframework.batch.core.launch.JobLauncher;import org.springframework.boot..
Spring Batch - 개요, 도메인 이해
·
Spring
최근에 이직한 회사에서 스프링 배치를 사용해서, 스프링 배치를 조금 더 잘 활용하기 위해 공부를 시작했다.  시중의 책, 강의, 공식 문서를 기반으로 내용을 정리한다. 실무에서 참고할만한 상황이 있다면 해당 사항도 같이 작성할 예정이다.스프링 배치 개요자바 기반 표준 배치 기술 부재로 만들어짐.SpringSouce 와 Accenture의 합작품Accenture는 이전에 소유했던 배치 처리 아키텍처 프레임워크를 Spring Batch 프로젝트에 기증함배치 핵심 패턴Read - 데이터 조회 (extract)Process - 특정 방법으로 데이터를 가공 (transform)Write - 데이터를 수정된 양식으로 저장 (load)배치 시나리오배치 프로세스를 주기적으로 커밋동시 다발적인 job의 배치 처리 (다중..
인텔리제이 코딩 컨벤션
·
카테고리 없음
InteliJ 네이버 Java 코딩 컨벤션 적용하기 + Checkstyle (tistory.com) InteliJ 네이버 Java 코딩 컨벤션 적용하기 + Checkstyle InteliJ 네이버 Java 코딩 컨벤션 적용하기 + Checkstyle 코딩 컨벤션이란? 코딩 컨벤션이란 가독성이 좋고 관리하기 쉬운 코드를 작성하기 위한 코딩 스타일 규약을 말한다. 코딩 컨벤션을 준수하면 bestinu.tistory.com
옵티마이저와 힌트
·
Database
쿼리 실행절차 쿼리 실행 절차는 보통 다음과 같다. 1. 사용자로부터 요청된 SQL문장을 잘게 쪼개서 MySQL서버가 이해할 수 있는 수준으로 분리한다.(파스 트리) 2. SQL의 파싱 정보를 확인하면서, 어떤 테이블로부터 읽고 어떤 인덱스를 이용해서 테이블을 읽을지 선택한다. 3. 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져온다. 여기서 두 번째 단계는 '최적화' 단계라고 할 수 있으며, MySQL서버의 옵티마이저에서 실행한다. 이 두번째 단계가 완료되면, 쿼리의 '실행 계획'이 만들어지는 것이다. 옵티마이저 - 옵티마이저는 쿼리를 최적으로 실행하기 위해, 각 테이블의 데이터가 어떤 분포로 저장돼있는지 통계정보를 참조하며, 그러한 기본 데이터를 비교해 최적의 실행계획을 수립한..
인덱스
·
Database
인덱스 - 칼럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 삼아 인덱스로 만들어 둠 - 칼럼의 값을 주어진 순서로 미리 정렬해서 보관함 - 정렬의 과정을 거치기 때문에, 인덱스가 많은 테이블은 insert, update, delete 문장의 처리가 느려짐. 단, select문장은 매우 빠르게 처리할 수 있다 - 인덱스의 종류를 역할 별로 구분하면, PK (Primary Key) 와 보조 키 (Secondary Index)로 구분할 수 있음 -> PK : 그 레코드를 대표하는 칼럼의 값으로 만들어진 인덱스. -> PK를 제외한 나머지 모든 인덱스는 세컨더리 인덱스라고도 분류 - 데이터 저장방식 별로 구분하면, B-Tree인덱스와 Hash 인덱스가 있다. - B-Tree 인덱스 : 칼럼의 값을 변..
Spring AOP vs AspectJ
·
Spring
Spring AOP 1. 프록시 기반 : Spring AOP 는 주로 프록시 기반의 AOP 구현을 제공함. 대상 객체에 대한 프록시를 생성하고, 해당 프록시를 통해 메서드 호출을 가로채는 방식. 2. 런타임 위빙 : Spring AOP는 런타임 위빙을 사용합니다. 어플리케이션 실행 중에 AOP가 적용됨. 3. 적용 범위 : Spring AOP는 메서드 실행에 대한 Join Point에만 적용됨. 생성자 호출, 필드 접근, static메서드 호출등은 조인 포인트로 고려되지 않음. 4. Spring 통합 : Spring 프레임워크와 긴밀하게 통합되어 있음, Spring Container에 의해 관리되는 빈에만 적용할 수 있음. 5. JAVA 기반 : 순수 JAVA만으로 구현이 되어있음 6. 속도 : Aspe..
takoyummy
TakoHub