본문 바로가기

ORM(JPA)4

[JPA] jpa에서 복합키와 식별관계 매핑 하기 DB의 설계상에서 key를 단일 키만 사용하는 경우는 거의 없습니다. 대부분 복합 key를 사용하여 DB 설계를 하고 있습니다. 그렇다면 JPA에서 복합 키를 어떻게 표현할 수 있을까요? 그 방법에 대해 차근차근 살펴보겠습니다. 식별, 비식별 관계 DB에서는 FK(외래 키)가 기본 키에 포함되는지 여부에 따라 식별, 비식별 관계로 구분됩니다. 보통 비식별 관계를 주로 사용하고 필요한 상항에서 식별 관계를 사용합니다. 식별 관계 : 부모 테이블의 기본 키를 받아 자식 테이블의 기본 키 + 외래 키로 사용 비식별 관계 : 부모 테이블의 기본 키를 받아서 자식 테이블의 외래 키 로 사용 필수적 비식별 관계 : 외래 키에 NULL을 허용하지 않음 선택적 비식별 관계 : 외래 키에 NULL을 허용 복합 키를 표현.. 2020. 2. 4.
[JPA] 상속 관계 매핑 객체의 상속 관계를 DB에 어떻게 매핑하는지 알아보겠습니다. 우선 객체에 존재하는 상속관계가 DB에서는 표현할 수 없습니다. 비슷하게 Super-Type Sub-Type 관계라는 모델링 기법이 상속과 유사한 모습을 하고 있습니다. 슈퍼 서브타입 관계를 모델링할 때는 3가지의 방법이 있습니다. 각각의 테이블로 변환 통합 테이블로 변환 서브타입 테이블로 변환 아래 그림과 같이 물품에 속하는 음반, 영화, 책 모델이 있다고 생각하고 위의 3가지 방법을 차래대로 살펴보겠습니다. Joined Strategy (조인 전략) 위 그림의 음반, 영화, 책 모델을 각각의 자식 테이블로 만들고 key를 기본키+부모의 외래 키로 사용하는 전략입니다. 테이블이 정규화되고 FK 참조 무결성 제약조건 활용, 저장공간 효율성의 장.. 2020. 2. 3.
[JPA] 연관관계 매핑 - 1:1(일대일), N:N(다대다) [스프링/JPA] - [JPA] 연관관계 매핑 - N:1(다대일), 1:N(일대다) 1:1 매핑과 N:N 매핑에 대해 순서대로 살펴보겠습니다. 1:1 (일대일) 1:1 관계는 양쪽이 서로 하나의 관계를 가지는 경우입니다. 테이블에서는 FK(외래 키)가 어느 쪽의 테이블에 있던 양방향 조회가 가능합니다. 따라서 테이블 관점에서 봤을 때 주/대상 테이블 어느 쪽이든 FK가 위치할 수 있습니다. 아래의 2가지 경우를 살펴보겠습니다. MEMBER(회원) 테이블이 주 테이블, LOCKER(사물함) 테이블이 대상 테이블인 경우에 1:1 관계를 살펴보죠. 경우 FK 위치 주 테이블에 FK MEMBER FK를 객체 참조와 비슷하게 사용 가능 개발자 선호 대상 테이블에 FK LOCKER 1:1 -> 1:N 으로 DB 설.. 2020. 2. 1.
[JPA] 연관관계 매핑 - N:1(다대일), 1:N(일대다) [스프링/JPA] - [JPA] 연관관계 매핑 - 1:1(일대일), N:N(다대다) JPA는 다양한 연결 관계가 있습니다. 이 연결 관계들에 대해 하나씩 알아보겠습니다. 고려할 점 엔티티의 연관 관계를 매핑할 때는 고려해야 할 점 3가지가 있습니다. 다중성 단방향, 양방향 연관관계의 주인 위의 3가지 사항을 서로 조합하여 생기는 경우의 수를 가지고 연관관계를 설정해야 합니다. 예를 들어 N:1 단방향이나 N:N 양방향 관계와 같은 경우를 만들 수 있습니다. N:1 (다대일) 데이터 테이블의 1, N 관계에서 외래 키는 항상 다쪽(N)에 있습니다. 따라서 양방향의 경우 항상 N 쪽이 연관관계의 주인입니다. 이 말은 즉 양방향일 경우에는 @OneToMany를 선언한 쪽에서 mappedBy속성을 지정해야 한다.. 2020. 1. 31.