Proxy & Fetch & Cascade & Orphan
·
📘 Backend/Spring
📘 Proxy em.find() DB를 통해서 실제 엔티티 조회 em.getReference() DB조회를 미루는 프록시 객체 조회 find() 와 getReference() find()를 했을땐 정상적인 select 쿼리가 나갔지만 getReference()를 했을때 getId를 조회를 하면 Select 쿼리가 안나간다. 왜냐하면 Member의 Id는 파라미터로 들어온 값을 사용하기 때문에 프록시 객체의 초기화가 안됨. findMember2.getUsername()을 했을때 비로소 DB의 정보를 가져와야 하므로, getUsername()을 했을떄 Select 쿼리가 나간다. 즉, 프록시 객체에 없는 정보를 호출하면 객체가 초기화 되면서 DB의 정보를 조회한다. // Member findMember1 =..
Relation Mapping & Mapped Super Class
·
📘 Backend/Spring
📘 Entity 연관관계 설정 JPA의 목적 - 객체지향 프로그래밍과 데이터베이스 사이의 패러다임 불일치 해결 연관관계 정의 규칙 방향 : 단방향, 양방향 (객체 참조) 연관관계의 주인 : 양방향일 때, 연관관계에서 관리 주체 다중성 : 1:1, 1:N, N:1, N:M 단방향, 양방향 DB 테이블은 외래키 하나로 양쪽 테이블 조인이 가능하지만 객체는 참조용 필드가 있는 객체만 참조가 가능하다 그렇기 떄문에 두 객체 사이에 하나의 객체만 참조용 필드를 가지면 단방향, 각각 참조 필드를 가지고 있으면 양방향 관계다 JPA를 사용하여 DB와 패러다임을 맟추기 위해서 객체는 연관관계를 잘 선택해야 한다 선택은 비즈니스 로직에서 두 객체가 참조가 필요한지 여부를 고민해보면 됨 board.getPost()처럼 참..
Project Reactor
·
📘 Backend/Spring
📘 Project Reactor 완전한 Non-Blocking 통신 지원 Publisher 타입으로 Mono[0|1] , Flux[N] 존재, 숫자는 가능한 데이터 emit의 수 MSA 기반 Application에 적합한 Library BackPresure 전략 사용 BackPresure 전략이란? Subscriber의 emit 데이터 처리 속도가 Publisher의 emit 속도를 따라가지 못할때 제어하는 전략 📘 Marble Diagram Reactor의 데이터 타입 중 하나인 Mono 마블 다이어 그램 (1) 원본 Mono에서 시작되는 Sequence를 타임라인으로 표현 (2) Sequence에서 구슬 1개가 생기는걸 데이터 Emit으로 표현 (3) 수직 막대바( | ) -> Sequence 정상 ..
Spring - Reactive Streams
·
📘 Backend/Spring
📘 Reactive System & Reactive Programming 선언형 프로그래밍(Lambda 표현식, Stream API), 순차 실행 X Reactive System은 Requst Thread의 응답 대기시간을 최소화 할 수 있게 Non-Bloking 통신 지원함 Reactive Programming 에서의 반응은 Thread의 Non-Blocking과 관련이 있다. Reactive System 설계 원칙 Means - 리액티브 시스템의 커뮤니케이션을 담당 Message Driven 리액티브 시스템은 메세지 기반 통신을 통한 시스템 간 느슨한 결합 유지 Form - 메세지 기반 통신을 통한 구조 형성 Elastic 트래픽량에 관계없이 일정한 응답성 유지 Resiilient 시스템 장애 발생 ..
OAuth2 (Google API)
·
📘 Backend/Spring
📘 OAuth2 [출처] OAuth 2.0 동작 방식의 이해|작성자 MDS인텔리전스](https://blog.naver.com/mds_datasecurity/222182943542) JWT는 사용자의 Credential을 직접 백엔드 어플리케이션에서 관리하는 구조이지만 OAuth2의 인증 방식은 백엔드 어플리케이션의 직접적인 관여가 없고, ThirdParty에서 사용자의 인증처리를 위임하고 Resource에 대한 자격증명 토큰을 발급한다. OAuth2를 적용하기 적합한 Application 유형 ThirdParty Application의 직접적인 API 사용하는 경우 다중 인증 목적 (보안성 ↑)의 경우 User의 Credential 정보의 흔적을 남기고 싶지 않을 경우 OAuth2 구성요소 Resour..