Dev/Spring (9) 썸네일형 리스트형 Fetch Type JPA에서 테이블 간 연관 관계는 참조를 통해 이뤄짐. 서비스가 커질수록, 참조하는 객체가 많아지고, 객체가 가지는 데이터의 양이 많아짐. 이렇게 객체가 커질수록, DB로부터 참조하는 객체들의 데이터까지 한꺼번에 가져오는 행동은 부담이 커짐. 따라서 JPA는 참조하는 객체들의 데이터를 가져오는 시점을 정할 수 있음. ➡️ Fetch Type EAGER 성실한, 열심인 뜻을 가짐. 말 그대로 데이터를 가져오는데 성실함. 하나의 객체를 DB로부터 읽어올 때 참조 객체들의 데이터까지 전부 읽어오는 방식을 뜻함. 언제나 한번의 쿼리로 모든 정보를 가져옴. 참조 객체와 항상 함께 로드되어야 하는 조건을 가진 entity에 적합함 연곤된 entitiy를 따로따로 조회하는 것이 아니라, 조인을 이용해 하나의 쿼리로 .. Bean & Component @Component 싱글톤 클래스 빈을 생성하는 어노테이션 물론 @Scope(“Prototype”) 통해 싱글톤이 아닌 빈을 생성 가능 @Service, @Repository 도 이에 해당됨 이 어노테이션은 선언적(Declarative)인 어노테이션. 즉, 패키지 스캔 안에 이 어노테이션은 “이 클래스를 정의했으니 빈으로 등록해줘” 라는 의미 @Bean @Configuration 어노테이션이 들어간 Spring을 설정하는 클래스 내에 들어가는 메소드에서 선언. 만약 이를 @Component로 따지면, 스프링은 스캔할 패키지를 검색해서 @Component 어노테이션을 발견하면 아래와 같이 등록하는 것처럼 됨. @Component public class MyBean { // ... } // 스프링 내부 처리.. JPA CascadeType CascadeType.PERSIST entity를 영속화 할 때 이 필드에 보유 된 entity도 유지. EntityManager가 flush 중에 새로운 entity를 참조하는 필드를 찾고 이 필드가 CascadeType.PERSIST를 사용하지 않으면 오류이므로 Cascade 규칙의 자유로운 적용을 제안함 CascadeType.MERGE entity 상태를 병합 할 때, 이 필드에 보유 된 entity도 병합 CascadeType.REFRESH entity를 새로 고칠 때, 이 필드에 보유 된 entity도 새로 고침. CascadeType.REMOVE entity를 삭제할 때, 이 필드에 보유된 entity 도 삭제 CascadeType.DETACH 부모 entity가 detach()를 수행하게 되.. Spring Cloud Gateway API Gateway 인증 / 모니터링 / 오케스트레이션 등과 같은 기능을 포함한 향상도니 Reverse Proxy API Gateway가 필요한 이유는 안전한 API유통과 Client 요청별로 유연하게 댗하기 위함. MSA에서 언급되는 컴포넌트 중 하나이며 모든 클라이언트 요청에 대한 endpoint를 통합하는 서버 마치 프록시 서버처럼 동작함 인증 및 권한 모니터링, loggin 등 추가적인 기능이 있음 모든 비즈니스 로직이 하나의 서버에 존재하는 Monolithic Architecture과 달리 MSA는 도메인별 데이터를 저장하고 도메인별로 하나 이상의 서버가 따로 존재함. 한 서비스에 한개 이상의 서버가 존재하기 때문에 이 서비스를 사용하는 클라이언트 입장에서는 다수의 endpoint가 생기게 되.. Spring Security 스프링 시큐리티는 인증(Authenticate) 와 인가(Authorize) 과정을 쉽게 도와 주기 위한 라이브러리. 이 스프링 시큐리티는 필터 기반으로 동작하는데, 필터는 스프링의 디스패처에 오기 전 WAS에서 관리하는 ‘서블릿 필터’에서 동작하기 때문에, 스프링은 서블릿 필터들을 관리하기 위해서 ‘DelegatingFilterProxy’를 web.xml에 설정하여 스프링에서 설정한 서블릿 필터가 동작하도록 함. 해당 필터는 커스텀으로 만들 수도 있고, 이미 선언되어있는 기본적인 필터들을이용할 수도 있음. 해당 필터는 체이닝 방식으로 이루어짐 request context가 path matcher가 되는 필터가 있다면, 필터가 동작해서 인증을 수행하는 방식 주요 컴포넌트 AuthenticationWebF.. Spring Batch - JobParameter & Scope 스프링 배치의 경우 외부 혹은 내부에서 파라미터를 받아 여러 배치 컴포넌트에서 사용할 수 있게 지원하고 있음. 이 파라미터를 Job Parameter 라고 함. Job Parameter를 사용하기 위해선 항상 Spring Batch 전용 Scope를 선언해야만 함. 크게 @StepScope와 @JobScope 2가지가 있음 @Value("#{jobParameters[파라미터명]}") (SpEL로 선언해서 사용하면 됨) jobParameters 외에도 jobExecutionContext, stepExecutionContext emdeh SpEL로 사용할 수 있음. @JobScope에선 stepExecutionContext는 사용할 수 없고, jobParameters 와 jobExecutionContext만.. Spring Batch - BatchStatus & ExitStatus BatchStatus와 ExitStatus의 차이를 알아야함. BatchStatus는 사용되는 값은 COMPLETED, STARTING, STARTED, STOPPING, STOPPED, FAILED, ABANDONED, UNKNOWN 이 있음. .on("FAILED").to(stepB()) 위 코드에서 on 메소드가 참조하는 것은 BatchStatus 으로 생각할 수 있지만 실제 참조되는 값은 Step의 ExitStatus 임. ExitStatus는 Step의 실행 후 상태를 말함. Spring Batch는 기본적으로 ExitStatus의 exitCode는 Step의 BatchStatus와 같도록 설정이 되어 있음 출처 : https://jojoldu.tistory.com/328?category=902.. Spring Batch (2) 스프링 배치는 스프링의 특성을 그대로 가져옴. DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있으면서, Accenture의 배치 노하우가 담긴 아키텍처를 사용할 수 있음. 스프링 배치는 어플리케이션 코드만 작성하면 되는 것이 아님. 메타 데이터 테이블들이 필용함. ** 메타데이터는 데이터를 설명하는 데이터라고 보면 됨. 스프링 배치의 메타 데이터는 다음과 같은 내용들을 담고 있음. 이전에 실행한 Job 어떤 것들이 있느느 지 최근 실패한 Batch Parameter가 어떤것들이 있고, 성공한 Job은 어떤것들이 있는지 다시 실행한다면 어디서 부터 시작하면 됮리 어떤 Job에 어떤 Step들이 있었고, Step들 중 성공한 Step과 실패한 Step들은 어떤것들이 있는지.. 이전 1 2 다음