본문 바로가기

분류 전체보기120

JPA - 프록시 Member를 조회할 때 Team도 함께 조회해야 할까? Member와 Team이 연관관계를 가짐 Member 객체만 필요한 상황 Team까지 메모리에 올라오면 리소스의 낭비 이때 지연로딩을 사용한다면? Team을 지연로딩으로 처리 Team을 제외한 Member의 상태만으로 로직 처리 리소스의 낭비를 줄임 지연로딩을 이해하기 위해 먼저 프록시를 이해해보자 프록시 기초 • 뒤에 나올 지연로딩이라는 기술을 가능하게 하는 것이 프록시이다 • em.find() vs em.getReference() • em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 • em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 특징(1) • 실제 클래스를 상속 받아서 만들.. 2022. 4. 11.
JPA - @MappedSuperclass @MappedSuperclass 코드예제 @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity{ @CreatedDate // Entity가 생성되어 저장될 때 시간이 자동 저장됩니다. private LocalDateTime createDate; @LastModifiedDate // 조회한 Entity 값을 변경할 때 시간이 자동 저장됩니다. private LocalDateTime modifiedDate; } @Entity public class Member extends BaseEntity{ ... } // JPA Auditing 활성화 @EnableJpaAudi.. 2022. 4. 10.
JPA - 상속관계 매핑 상속관계 매핑 • 관계형 데이터베이스는 상속 관계가 존재하지 않는다. • 데이터베이스의 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. • 상속관계 매핑이란 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것이다. ※ DB 설계에는 논리모델(왼쪽)이 있고 물리모델(오른쪽)이 있다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 3가지 방법 1. 각각 테이블로 변환 -> 조인 전략 (권장) 2. 통합 테이블로 변환 -> 단일 테이블 전략 (기본설정) 3. 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 (추천하지않음) ※참고로 상위 클래스는 반드시 abstract class로 만들어야한다.※ 밑에 코드예제에서는 class를 abstract로 선언하지 않았다.. 2022. 4. 10.
JPA - 다양한 연관관계 매핑(4) : 다대다 [N : M] 다대다 • 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. • 연결 테이블을 추가해서 일대다, 다대일 관계로 풀어내야한다. • 보면 두 개의 PK가 묶여있는걸 알 수 있다. • 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계 가능 다대다 단방향 public class Member{ @ManyToMany @JoinTable(name = "MEMBER_PRODUCT") private List products = new ArrayList(); } 다대다 양방향 public class Member{ @ManyToMany @JoinTable(name = "MEMBER_PRODUCT") private List products = new ArrayList(); } public class.. 2022. 4. 10.
JPA - 다양한 연관관계 매핑(3) : 일대일 [1 : 1] 일대일 • 회원이 딱 하나의 락커를 가지고 있는 상황이다. 반대로 락커도 회원 한명만 할당 받을 수 있는 비즈니스 적인 룰이 있고이때, 둘의 관계는 일대일 관계이다, (일대일 관계는 그 반대도 일대일) • 일대일 관계는 다대일 단방향과 매우 유사하다 (유니크가 들어가냐, 들어가지 않냐의 차이) • 주 테이블이나 대상 테이블 중에 외래 키 선택 가능 • 주 테이블에 외래 키 (단방향, 양방향) • 대상 테이블에 외래 키 (단방향, 양방향) = 총 네 가지의 경우의 수 • 외래 키에 데이터베이스 유니크(UNI) 제약조건 추가 • 일대일에서는 어느 테이블FK를 가지면 그 테이블과 매핑되는 객체가 연관관계의 주인이 된다. 1-1. 주 테이블 왜래 키 단방향 public class Member{ @OneToOne.. 2022. 4. 10.