값 타입 기본 값 타입 자바 기본 타입 래퍼 클래스 String 임베디드 타입 (복합 값 타입) 컬렉션 값 타입 기본 값 타입 자바가 제공하는 기본 데이터 타입 기본 타입은 절대 공유되지 않으며, a=b로 선언 시 b의 값을 복사해서 a에 넣음 임베디드 타입 (복합 값 타입) JPA에서 사용자가 직접 정의한 값 타입 임베디드 타입도 int, String처럼 값 타입임 하이버네이트는 임베디드 타입을 컴포넌트라 함 컬렉션 값 타입 하나 이상의 값 타입을 저장할 때 사용 값 타입 컬렉션은 영속성 전이 + 고아 객체 제거 기능을 필수로 가짐 엔티티 타입의 특징 식별자가 있음 엔티티 타입은 식별자가 있고 식별자로 구분할 수 있음 생명 주기가 있음 생성하고 영속화하고 소멸하는 생명 주기가 있음 em.persist(..
Backend

프록시와 연관관계 정리 프록시와 즉시로딩, 지연로딩 영속성 전이와 고아 객체 객체는 객체 그래프로 연관된 객체들을 탐색하는데 그때 객체가 데이터베이스에 저장되어있어서 연관된 객체를 맘껏 탐색하기는 어려움 -> 이 문제를 해결하기 위해 프록시라는 기술 사용 프록시를 사용하면 연관된 객체를 처음부터 DB에서 조회하지 않고, 실제 사용하는 시점에 조회 자주 사용하는 객체들은 조인을 사용해서 조회하는 것이 효과적 JPA는 즉시 로딩과 지연 로딩을 지원 프록시 엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아님 -> 한 엔티티를 조회할 때 연관된 엔티티를 같이 조회하는 것은 비효율적 JPA는 이런 문제를 해결하기 위해 엔티티가 실제 사용될 때 까지 조회를 지연하는 방법을 제공 = 지연 로딩 프록시 클래..

7장 고급 매핑 상속 관계 매핑 @MappedSuperclass 복합 키와 식별 관계 매핑 조인 테이블 엔티티 하나에 여러 테이블 매핑 상속 관계 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 있음 1. 각각의 테이블로 변환 (조인 전략) 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본키 + 외래키로 사용하는 전략 조회할 때 조인을 자주 사용함 주의점: 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없음 -> 타입을 구분하는 컬럼을 추가해야 함 예제에서는 DTYPE 컬럼을 구분 컬럼으로 사용 조인 전략 장점 테이블이 정규화 됨 외래키 참조 무결성 제약조건을 활용할 수 있음 저장공간을 효율적으로 사용함..

다양한 연관관계 매핑 연관관계를 매핑할 때 고려하는 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일: 단방향, 양방향 일대다: 단방향, 양방향 일대일: 주 체이블 단방향, 양방향 일대일: 대상 테이블 단방향, 양방향 다대다: 단방향, 양방향 다대일 외래키는 항상 다쪽에 있으므로 객체 양방향 관계에서 연관관계의 주인은 항상 다쪽이다. 다대일 단방향 예시 @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; 다대일 양방향 예시 @OneToMany(mappedBy="team") private List members = new ArrayList(); 일대다 엔티티를 하나 이상 참조할 수 있으므로 자바 컬렉션인 Collection, List, Se..