[Spring] 연관 관계 매핑 종류와 방향

WOOK JONG KIM·2022년 11월 2일
0
post-thumbnail

RDBMS를 사용할 때는 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하기란 불가능

대체로 설계가 복잡하면 각 도메인에 맞는 테이블을 설계하고, 연관관계를 설정해서 조인의 기능을 활용함

JPA를 사용하는 애플리케이션에서도 테이블의 연관관계를 엔티티간의 연관관계로 표현 가능
-> 성질이 달라 정확히 표현은 힘듬

연관 관계 이해

한 가게가 재고관리 시스템을 통해 상품을 관리한다 가정

재고로 등록돼 있는 상품 엔티티에는 가게로 상품을 공급 업체의 정보 엔티티가 매핑되어 있다

공긍 업체 입장에서 보면 한 가게에 남품하는 상품이 여러개 있을 수 있음므로 상품 엔티티와는 일대다 관계가 되며, 상품 입장에서 보면 하나의 공급 업체 임으로 다대일 관계

-> 어떤 엔티티를 중심으로 연고나 엔티티를 보느냐에 따라 연관 상태가 달라짐

DB에서는 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 조인해서 참조하는 구조로 생성
-> JPA를 사용하는 객체지향 모델링에서는 엔티티 간 참조 방향 설정 가능
-> DB와 관계를 일치시키기 위해 양방향으로 설정하는 것도 괜찮지만, 비즈니스 로직 관점에서는 단방향 관계만 설정해도 해결되는 경우 많음

단방향 : 두 엔티티 관계에서 한쪽의 엔티티만 참조하는 형식

양방향 : 두 엔티티 관계에서 각 엔티티가 서로의 엔티티 참조하는 형식

연관관계가 설정되면 한테이블에서는 다른 테이블의 기본값을 외래키로 가지게 됨

일반적으로 외래키를 가진 테이블이 그 관계의 Owner가 되며, 주인은 외래키를 사용할 수 있으나 상대 엔티티는 읽는 작업만 수행 가능

profile
Journey for Backend Developer

0개의 댓글