객체와 테이블 매핑: @Entity, @Table필드와 컬럼 매핑: @Column기본 키 매핑: @Id연관관계 매핑: @ManyToOne, @JoinColumnJPA가 관리하는 클래스, 엔티티라고 함기본 생성자 필수 (public or protected 생성자): 스펙
객체아 테이블 연관관계의 차이를 이해객체의 참조와 테이블의 외래 키를 매핑외래 키 식별자를 직접 다룸식별자로 다시 조회 -> 객체 지향적인 방법은 아님객체 연관관계 사용Member -> @ManyToOne(fetch = FetchType.LAZY) @JoinColumn
다중성단방향, 양방향연관관계 주인다대일: @ManyToOne일대다: @OneToMany일대일: @OneToOne다대다: @ManyToMany대칭성이 있음 다대일 반대는 일대다다대다는 실무에서 쓰면 안됨테이블외래 키 하나로 양쪽 조인 가능사실 방향이라는 개념이 없음객체참
관계형 데이터베이스는 상속관계 없음슈퍼타입 서브 타입 관계라는 모델링 기법이 객체 상속과 유사상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입, 서브타입 관계를 매핑슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법각각 테이블로 변환 -> 조인 전략통합
em.find() .vs. em.getReference()find(): 데이터베이스를 통해 실제 엔티티 객체 조회getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회실제 클래스를 상속 받아서 만들어짐실제 클래스와 겉모양 똑같음사용하는
JPA 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적