단방향 연관관계에서는 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 |
댓글