Spring

· Spring/JPA
JPA 에서의 '프록시(Proxy)' 는 기존에 알고 있던, 클라이언트와 서버 사이에 위치하는 '프록시 서버(Proxy Server)' 와는 개념이 전혀 달랐다. 느낌은 비슷했는데, "사용자가 리소스에 직접 접근하지 않고, 대신 접근해주는 중간 매개체" 라는 점이 비슷했다. "프록시 서버 (Proxy Server)" 는 클라이언트가 직접 서버와 통신하지 않고, 프록시 서버를 통해 서버와 통신하는 것이고, "JPA 의 프록시 (Proxy)" 는 실제 엔티티 객체를 조회하는 대신, 지연로딩을 하는 가짜 (프록시) 엔티티 객체를 조회하는 것이다. 1. 프록시의 필요성 ※ 아래와 같은 객체가 존재할때, Member를 조회할때, Team도 함께 조회해야 하는가? Member의 데이터만 사용하는데, Team 까지 ..
· Spring/JPA
RDB는 상속관계가 존재하지 않는다. 슈퍼타입 / 서브타입 관계라는 모델링 기법이 객체 상속과 유사 객체 구조 공통 속성을 상위 객체인 'Item'으로 묶고, 하위 객체 안에는 각자의 속성을 구성 > ※ JPA의 기본 전략 : 단일 테이블(SINGLE_TABLE) ※ 모든 전략에서 상위테이블(ITEM)은 추상 클래스(abstract)로 해야한다. => 추상 클래스로 설정하지 않는다면, 상속관계와는 별도의 클래스로 사용될 우려가 있기 때문이다. 1. 조인 전략 (JOINED) ▶기본적으로 "정석"으로 사용되는 전략◀ * JPA의 기본 전략인 단일 테이블( SINGLE_TABLE )을 조인 전략(JOINED)로 변경하기 ** 상위 엔티티(Item)에 @Inheritance(strategy = Inherita..
· Spring/JPA
* 연관관계 매핑시 고려사항 3가지 1. 다중성 : 다대일 , 일대다 , 일대일 , 다대다 2. 단방향 / 양방향 : 테이블 - 외래키 하나로 양쪽 조인 가능 ( 방향 개념 X ) 3. 연관관계 주인 = 외래키(FK) 를 가지고 있는 엔티티 연관관계 주인이 먼저 등장 * 다대일 (N : 1) ▶ 가장 많이 사용 ◀ ※ 연관관계 주인은 '다(N)' 이다. ※ 실선 화살표 : 값 입력이 가능한 연관관계 / 점선 화살표 : 조회만 가능한 연관관계 (주) Member -> (종) Team 으로의 단방향 연관관계가 메인이다. 양방향 연관관계를 위해 (종)Team -> (주)Member 로의 연관관계를 추가 한다고 해서 테이블 구성이 달라지지 않는다. ( (종)Team -> (주)Member 연관관계는 조회 전용이..
· Spring/JPA
연관관계 객체의 연관관계와 테이블의 연관관계는 서로 간극이 존재한다. 객체는 참조를 사용하여 연관된 객체를 찾는다. 테이블은 외래키를 사용하여 연관된 테이블을 찾는다. 따라서, ORM에서 "객체의 참조와 테이블의 외래키를 매핑" 하는 것이 중요하다. 양방향 연관관계에서는 연관관계의 주인 설정이 중요하다. 연관관계의 주인은 "외래키의 위치" 와 같다. Member 와 Team의 연관관계에서 주인은 외래키를 가지고 있는 "Member" 이다. 연관관계의 주인은 '주', 주인이 아닌 것은 '종'으로 표기하겠다. ex) 주(Member) / 종(Team) * 주(Member) -> 종(Team) 연관관계 * @ManyToOne : Member.class의 입장에서, Team.class를 본 관점. @JoinCo..
· Spring/JPA
> 1. JPA 내부 동작 방식 2. Object - RDB : Mapping * Entity Mapping * 1. 'Object - Table' Mapping @Entity @Entity가 붙은 클래스 == JPA에서 관리하는 클래스 ※ 기본 생성자 필수 (피라미터가 없는 public, protected 생성자) @Table : 엔티티와 매핑할 테이블 지정 2. 'Field - Column' Mapping @Column : 컬럼 매핑 §주요 옵션 name : 필드와 매핑할 테이블의 컬럼 이름 nullable : null 값 허용 여부 unique : unique 제약 조건 columnDefinition : 데이터베이스 컬럼 정보를 직접 부여 @Enumerated : enum 타입 매핑 value = ..
· Spring/JPA
1. 영속성 컨텍스트란? 영속성 컨텍스트는 "엔티티를 영구 저장하는 환경"을 의미한다. 영속성 컨텍스트는 '논리적인 개념' 이다. Entity Manager를 통해 영속성 컨텍스트에 접근 한다. 2. 엔티티의 상태 1. 비영속 (new / transient) 2. 영속 (managed) 3. 준영속 (detached) 4. 삭제 (removed) 3. 영속성 컨텍스트의 이점 [영속성 컨텍스트의 구성요소] [3-1. 1차 캐시] 로그를 보면, 순서가 이상한 것을 볼 수 있다. 코드를 보면 아래의 순서로 출력되어야 할 것 같다. 1. member 객체 생성 -> 출력 X 2. "==== BEFORE ====" 출력 3. DB 저장 쿼리 출력 (insert 문) 4. "==== AFTER ====" 출력 5...
MoveForward
'Spring' 카테고리의 글 목록 (3 Page)