1. Spring data envers - hibernate 에서 만든 데이터 변경 이력을 로깅하기위한 라이브러리.- 특정 테이블에 insert, update, delete 등의 이벤트 가 발생하면 다른 테이블에 같은 작업을 반복 해서 함으로서 자동으로 이력을 남길 수 있게 해주는 라이브러리- JPA 로 구현되어있다 사용방법1) 의존성추가 implementation 'org.hibernate:hibernate-envers' 2) @Audited 로 변경이력 저장할 테이블 생성- 변경이력을 감지하고 싶은 엔티티에 @Audited 어노테이션을 추가한다. @Entity@Auditedpublic class Attendance {... } => Attendance_AUD 테이블이 자동 생성되서 변경이력을 확..
https://spring.io/projects/spring-data-ldap#overview Spring Data LDAP The Spring Data LDAP project provides repository abstractions for Spring LDAP on top of Spring LDAP’s LdapTemplate and Object-Directory Mapping. spring.io Overview Spring LDAP용 Spring Data는 새로운 Spring LDAP에 대해 친숙하고 일관된 Repository 추상화를 제공하는 것을 목표로 하는 umbrella Spring Data 프로젝트의 일부입니다. Introduction Spring Data LDAP 프로젝트는 Spring L..
배치 아키텍처 1. 잡 - 중단이나 상호작용 없이 처음부터 끝까지 실행되는 처리 - 여러개의 스텝이 모여 이뤄질 수 있다. - 잡의 플로우는 조건부일 수 있다. 2. 스텝 - 잡을 구성하는 독립된 단위 - 태스크릿 기반 스텝과 청크 기반 스텝 두가지 유형이 있다. 태스크릿 (Tasklet) 스텝이 중지될때까지 execute 메서드가 계속 반복해서 수행된다. (execute 가 호출될때마다 새로운 트랜잭션이 시작된다) 초기화, 저장 프로시저 실행, 알림전송 같은 잡에서 사용된다. 청크 아이템 기반 처리에 사용된다. ItemReader, ItemProcessor(선택), ItemWriter 라는 3개의 주요 부분으로 구성될 수 있다 3. 잡 실행 1) JobRepository : 주요 공통 컨포넌트 - 다양..
더보기POJO로 구성된 ETL을 스프링배치로 변경할 수 있을까?- 나는 800개가 넘는 ETL TASK를 처리하고 싶고, 이 TASK들의 실행 Interval은 5초~5분 사이였으면 좋겠다.- 스케일아웃 하기 쉬워야한다.- Rest API로 TASK의 실행시간, 수행, 정지, 현재 진행중인 태스크등을 확인할 수 있어야한다.- 서비스 다운시 데이터 오염이 생기면 안된다. 변경한다면 좋을까?? 나쁠까??? 스프링배치 완벽가이드를 학습해보면서 알아보자.배치가 직면한 과제1. 사용성과 유지보수성- 공통 컴포넌트를 쉽게 확장해 새로운 기능을 추가할 수 있는가?- 단위테스트가 잘 마련되있는가?- 잡이 실패할때 디버깅 하기 쉽고 왜 실패했는지 알 수 있는가? 2. 확장성- 처리해야하는 데이터가 갑자기 늘어났을때, 인..
환경 Java 11 Spring boot 2.6.4 의존성 추가 org.springframework.boot spring-boot-starter-batch 스프링 배치 활성화 @EnableBatchProcessing : 스프링 배치가 작동하기 위해 선언해야 하는 어노테이션 총 4개의 설정 클래스를 실행시킨다. 스프링 배치의 모든 초기화 및 실행구성이 등록된다. @EnableBatchProcessing @SpringBootApplication public class SpringBatchApplication { public static void main(String[] args) { SpringApplication.run(SpringBatchApplication.class, args); } } 스프링 배치 ..
1. 배치 핵심패턴 [Extract] : Read 패턴 - 데이터 베이스, 파일, 큐에서 다량의 데이터 조회 [Transform] : Process 패턴 - 특정 방법으로 데이터를 가공 [Load] : Write 패턴 - 데이터를 수정된 양식으로 다시 저장 2. 배치 시나리오 배치 프로세스를 진행하면서 데이터들을 쪼개서 저장할 수 있어야 한다. 동시 다발적인 Job의 배치 처리, 대용량 병렬처리가 가능해야 한다. 실패 후 수동 또는 스케줄링에 의해 재시작 될 수 있어야 한다. 의존관계가 있는 step 여러개를 순차적으로 처리 할 수 있어야 한다. 조건적 Flow 구성을 통한 체계적이고 유연한 배치 모델을 구성할 수 있어야 한다. 배치는 반복적으로 실행되도 괜찮아야하고, 재시도 할 수 있어야 하며, 일부 ..
1. 스프링 통합 Spring Integration 스프링 통합은 Enterprise Integration Patterns (구글에서 검색하면 논문이 나온다) 에서 보여준 대부분의 통합 패턴을 사용할 수 있게 구현한 것이다. 각 통합 패턴은 하나의 컴포넌트로 구현되며, 이것을 통해서 파이프라인으로 메시지가 데이터를 운반한다. 스프링 굿어을 사용하면 데이터가 이동하는 파이프라인으로 이런 컴포넌트들을 조립할 수 있다. 2. 간단한 통합 플로우 선언하기 통합 플로우를 통해 외부 리소스나 애플리케이션 자체에 데이터를 수신 또는 전송할 수 있다. 통합 가능한 리소스 중 하나 : 파일 시스템 파일시스템을 위한 컴포넌트 : 파일을 읽거나 쓰는 채널 어댑터 (Channel Adapter) 게이트웨이 - 파일에 데이터를..
기본 유요성 검사 라이브러리 추가하기 javax.validation validation-api 2.0.1.Final Hibernate 컴포넌트 - Java의 Bean 유효성 검사 라이브러리 - 이것을 이용해서 유효성 검사 규칙을 쉽게 선언할 수 있다. - 스프링부트에서 Hibernate 컴포넌트는 스프링 부트의 웹 스타터 의존성으로 자동 추가된다. -> 2.2 이상의 모든 SpringBoot 버전에서 유효성 검사 스타터는 더 이상 웹 스타터의 일부가 아닙니다. 참고 -> 다음의 의존성을 더 추가해주자! org.springframework.boot spring-boot-starter-validation 유효성 검사 규칙 선언하기 1) Taco 클래스 - Validate 조건:..
