응애개발자
article thumbnail
고급 매핑
Spring/JPA 2023. 7. 14. 01:15

1. 상속 관계 매핑 관계형 DB는 상속 개념이 없다. - 슈퍼타입 서브타입 논리 모델을 실제 테이블로 구현하는 방법 각각의 테이블로 변환 : 모두 테이블로 만들고 조회할 때 조인을 사용(조인 전략) 통합 테이블로 변환 : 테이블을 하나만 사용해서 통합 (단일 테이블 전략) 서브타입 테이블로 변환 : 서브 타입마다 하나의 테이블을 만든다 (구현 클래스마다 테이블 전략) 조인 전략 기본키 + 외래 키로 사용하는 전략이다. 따라서 조회할 때 조인을 자주 사용한다. 하지만 테이블은 타입 개념이 없으므로 타입을 구분하는 컬럼을 추가해야 한다. ① : 상속 매핑은 부모 클래스에 @Inheritance를 사용한다. 그리고 매핑 전략을 지정해야 하는데 여기서는 조인 전략을 사용하므로 InheritanceType.JO..

article thumbnail
다양한 연관관계 매핑
Spring/JPA 2023. 7. 13. 03:57

1. 다대일 DB 테이블의 1 : N 관계에서 외래 키는 항상 다 쪽에 있다. 예를 들어 회원(N)과 팀(1)이 있으면 회원 쪽이 연관관계의 주인이다. 다대일 단방향 [N : 1] 다대일 단방향 연관관계이다. Member.team 필드로 회원 테이블의 TEAM_ID 외래 키를 관리한다. 다대일 양방향 [N : 1 , 1 : N] 실선이 주인이고 점선은 주인이 아니다. 양방향은 외래 키가 있는 쪽이 연관관계의 주인이다. 양방향 연관관계는 항상 서로를 참조해야 한다. 2. 일대다 일대다 관계는 엔티티를 하나 이상 참조할 수 있으므로 자바 컬렉션인 Collection, List, Set, Map 중에 하나를 사용해야 한다. 일대다 단방향 [1 : N] 일대다 단방향 관계를 매핑할 때는 @JoinColumn을 ..

article thumbnail
연관관계매핑 기초
Spring/JPA 2023. 7. 13. 02:33

1. 단방향 연관관계 ex) 다대일 단방향 관계 이해 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계다. - 객체 연관관계 회원 객체는 Member.team 필드로 팀 객체와 연관관계를 맺는다. 회원과 팀은 단방향 관계이다. 회원은 Member.team을 통해 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없다. - 테이블 연관관계 회원 테이블은 TEAM_ID 외래 키로 팀 테이블과 연관관계를 맺는다. 회원과 팀은 양방향 관계이다. MEMBER테이블의 TEAM_ID 외래 키 하나로 MEMBER JOIN TEAM과 TEAM JOIN MEMBER 둘 다 가능하다. - 객체 연관관계와 테이블 연관관계의 가장 큰 차이 객체 간의 연관관계를 양방향으로 만들고 싶으면 반대편에서도..

article thumbnail
엔티티 매핑
Spring/JPA 2023. 7. 11. 14:19

엔티티 어노테이션 4가지 객체와 테이블 매핑 : @Entitiy, @Table 기본 키 매핑 : @Id 필드와 컬럼 매핑 : @Column 연관관계 매핑 : @ManyToOne, @JoinColumn 1. @Entity JPA를 사용하여 테이블과 매핑할 클래스는 @Entitiy어노테이션을 필수로 붙어야 한다. @Entity는 JPA가 관리하는 것 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정.보통 기본값인 클래스 이름 사용. 다른 패키지에 같은 이름의 엔티티 클래스가 생기지 않도록 주의 설정하지 않으면 클래스 이름 그대로 사용한다. -주의 사항 기본 생성자는 필수(public, protected) final 클래스, enum, interface, inner 클래스 사용 x 저장할 필드에..