본문 바로가기
Spring/JPA

연관관계 - 양방향 연관관계(기본 컨셉)

by YellowCow 2023. 3. 7.

단방향 연관관계에서는 1:N의 관계에서

'N'에 해당하는 Entity에 @JoinColumn 애너테이션을 이용하여

단방향 연관관계를 표현하였다.

 

단방향 연관관계는 한계가 존재하는데,
한 쪽 방향으로만 데이터를 조회할 수 있다

 

아래와 같은 테이블이 있다고 치자

관계형DB에서는 외래키인 DEPT_ID를 이용하여

Employee와 Department 양 쪽 모두 조회가능하다

 

하지만, 위 테이블과 매핑되는 Entity를 보자.

보기 쉽게 표현하면 아래와 같은 그림이 될 것이다

위 Entity의 경우,

Employee에서는 Department 객체의 참조값을 이용해서 Department 데이터를 조회가능하지만,

Department에서는 Employee의 참조값이 존재하지 않으로 Employee 조회가 불가능하다

 

이 문제를 해결하기 위해서 나온 것이 "양방향 연관관계"이다

 

양방향 연관관계를 적용하려면

양쪽  Entity클래스에 서로를 참조할 수 있는 참조변수를 만들어주고
@ManyToOne, @OneToMany와 같은 연관관계를 지정하면 됩니다

여기서, Department에서 Employee List 형태로 가지고 있냐는 의문이 들 수 있는

그건 Department->Employee 관점에서 ,

1:N관계에서 Employee 'N' 해당하는 관계이기 때문이다.

 

그러니까 쉽게 말해서, 부서에 여러 직원이 존재할 있기 때문이다

 

그리고

Department->Employee 관점에서 ,

테이블 관계가 1:N이기 때문에 @OneToMany 어노테이션을 붙여주었다

 

이 페이지에서는 양방향 연관관계의 기본 컨셉만 설명한 것이므로

위 코드대로 작성해서 실행하면 잘 작동하지 않을 것이다

 

위 코드가 제대로 동작하게 하기 위해서는 '연관관계의 주인'에 대한 개념을 알아야 한다

이 개념에 대해서는 추후에 추가로 설명하겠다

'Spring > JPA' 카테고리의 다른 글

양방향 연관관계 주의점  (0) 2023.03.15
양방향 연관관계 - 연관관계의 주인  (0) 2023.03.12
연관관계 - 단방향 연관관계  (0) 2023.02.28
Entity-Table 매핑 - 기본키 매핑  (0) 2023.02.24
환경세팅  (0) 2023.02.24

댓글