본문 바로가기

전체 글60

상속관계 매핑 자바 클래스에서는 부모클래스를 상속하여 자식클래스를 생성할 수 있다 하지만, DB에서는 상속관계 개념이 없다 대신, 논리적 모델의 슈퍼 타입과 서브타입이라는 개념이 존재한다 슈퍼 타입: 공통적인 컬럼을 가진 타입 서브 타입: 슈퍼타입에 컬럼을 추가하여 생성한 타입 예를 들어, PERSON(사람)이라는 테이블과 STUDENT(학생)와 SALARYMAN(직장인)이라는 테이블의 관계는 아래 사진과 같이 표현 가능하다 위 사진에서 PERSON이 슈퍼타입, STUDENT와 SALARYMAN을 서브타입으로 볼 수 있다 JPA에서는 슈퍼 타입과 서브타입을 매핑할 수 있는 여러 전략들을 제공한다 JPA에서 제공하는 전략은 아래와 같다 조인전략 조인전략 사용 시 테이블 구조는 아래와 같다 특징 부모-자식 테이블이 분리된.. 2023. 3. 24.
연관관계 - @ManyToMany JPA에서는 DB 테이블 간 관계를 매핑하기 위한 어노테이션들을 지원한다 이 페이지에서는 N:M 관계를 매핑하는 @ManyToMany 어노테이션에 대해 알아보겠다 Entity Entity 상에서 아래와 같이 N:M 관계를 표현할 수 있다 DB 실제 테이블 에서는 N:M 관계를 표현할 수 없다 N:M관계를 표현하기 위해 중간에 연결 테이블을 두어 1:N과 N:1관계로 풀어서 표현한다 아래 그림에서 N:M관계인 Order와 Item의 관계를 연결 테이블인 OrderItem 테이블을 두어 1:N, N:1 관계로 풀어서 표현하는 것을 볼 수 있다 양방향 연관관계 적용 1. N:M 관계에서 M의 관계인 Item에 Orders 참조변수 추가 2. ManyToMany 관계 설정 및 mappedBy 속성 추가 @Man.. 2023. 3. 23.
연관관계 - @OneToOne JPA에서는 DB 테이블 간 관계를 매핑하기 위한 어노테이션들을 지원한다 이 페이지에서는 1:1 관계를 매핑하는 @OneToOne 어노테이션에 대해 알아보겠다 1:1 관계의 경우, 외래키 관리를 주 테이블에서 할 수도 있고 대상 테이블에서 할 수도 있다 예를 들어, 한 사용자 당 1개의 휴대전화만 가질 수 있다고 해보자 그럴 경우, 사용자와 휴대전화 관계는 다음과 같이 DB와 Entity에서 1:1 관계로 표현될 수 있다 (1:1 관계의 경우 외래키에 Unique 제약조건이 걸려있어야 한다) 주 테이블에서 외래키를 관리할 경우 DB JPA 대상 테이블에서 외래키를 관리할 경우 DB JPA 연관관계의 주인 1:1 관계에서는 어느 쪽을 연관관계를 정하든 크게 문제가 없다 다만, DBA와 벡엔드 개발자의 관점.. 2023. 3. 22.
연관관계 - @OneToMany JPA에서는 DB 테이블 간 관계를 매핑하기 위한 어노테이션들을 지원한다 이 페이지에서는 1:N 관계를 매핑하는 @OneToMany 어노테이션에 대해 알아보겠다 1:N 관계는 다음과 같이 DB와 Enitity로 표현될 수 있다 DB Entity 연관관계의 주인 1:N 관계에서 1의 관계에 있는 Department의 employees가 연관관계의 주인이 된다 1:N 관계에서 1의 관계에 있는 Department의 employees가 연관관계의 주인이므로 Entity 상에서는 외래키(참조값) 관리를 Department의 employees에서 하고 있지만 DB에서는 Employee의 department에서 외래키 관리를 하고 있으므로 Department 엔티티의 employees(참조값)가 변경될 경우, De.. 2023. 3. 18.