jpa16 [JPA] @MappedSuperclass @MappedSuperclass 테이블과 매핑하지 않고 단순히 매핑 정보를 상속할 때 사용된다. 상속관계 매핑이 아니다. 엔티티가 아니고 테이블과 매핑되지 않는다. 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공한다. @MappedSuperclass @Getter @Setter public abstract class BaseEntity { private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDateTime lastModifiedDate; } @Entity @Getter @Setter public class Member extends BaseEntity{ @Id .. 2022. 1. 3. [JPA] 상속 관계 매핑 1. 상속 관계 매핑 객체의 상속과 DB의 슈퍼타입 서브타입 관계를 매핑하는 것 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신 슈퍼타입 서브타입 관계(Super-Type Sub-Type Relationship)이라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변화 -> 구현 클래스마다 테이블 전략 2. 조인 전략 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략이다. 조회할 때 조인을 사용해야 한다. .. 2022. 1. 3. [JPA] 연관관계 매핑 - 2 1. 다대일 (@ManyToOne) 다대일 관계의 반대 방향은 항상 일대다 관계고 일대다 관계의 반대 방향은 항상 다대일 관계이다. 데이터베이스 테이블의 일대다 관계에서 외래 키는 항상 다쪽에 있다. 따라서 양방향 관계에서 연관관계의 주인은 항상 다쪽이다. (1) 다대일 단방향 [N:1] @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String name; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; } @Entity @Getter.. 2022. 1. 2. [JPA] 연관관계 매핑 - 1 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 엔티티의 연관관계를 매핑할 때 다음 3가지를 고려해야 한다. 다중성 단방향, 양방향 연관관계의 주인 1. 단방향 연관관계 객체 연관관계 회원 객체는 Member.team 멤버 변수로 팀 객체와 연관관계를 맺는다. 회원 객체와 팀 객체는 단방향 관계다. Member.team 필드를 통해서 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없다. member.getTeam() 가능, team.getMember()는 불가능 테이블 연관관계 회원 테이블은 TEAM_ID 외래 키로 팀 테이블과 연관관계를 맺는다. 회원 테이블과 팀 테이블은 양방향 관계이다. 회원 테이블의 TEAM_ID 외래 키를 통해서 회원과 팀을 조인할 수 있고 반대로 팀.. 2022. 1. 1. 이전 1 2 3 다음 반응형