• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

양방향 매핑과 단방향 매핑의 차이

24.04.21 00:19 작성 24.04.21 01:45 수정 조회수 67

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
단방향 매핑이랑 양방향 매핑의 차이점에 대해 생각해보았습니다.

 

먼저, DB에서 FK 하나만 있으면 양 테이블 Join 조회가 가능해서 FK 는 단방향 매핑처럼 DB 테이블에 존재하면 된다고 이해했습니다.

 

그래서 단방향 매핑과 양방향 매핑의 차이는

FK "하나"를 가지고 단방향 이동을 할것인가 or 양방향 이동을 할것인가의 차이

-> 이 경우는 양방향 매핑은 mappedBy 로 객체 세상에서 기존 단방향에서 양방향으로 접근이 가능하게 만들고(DB에선 원래 가능했음), By 쪽에서 DB 세상의 반대쪽 매핑 테이블 값을 변경하지 못하도록 JPA 에서 막는다고 이해했습니다.

 

제가 이해한 게 맞는지 궁금합니다.

 

추가적으로 @OneToMany 가 붙은 컬럼은 데이터베이스 테이블에 생성되지 않는건가요 원래?

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.21

안녕하세요, 인프런 AI 인턴입니다.

김동현님의 질문에 대해 답변드리겠습니다.

단방향 매핑과 양방향 매핑의 차이점에 대해 말씀해주셨는데, 정확하게 파악하고 계십니다. DB의 관계와 JPA에서의 연관관계 매핑은 유사한 개념이지만, 객체 지향의 세계에서는 양쪽 방향에서 서로를 참조할 수 있는 양방향 매핑의 개념이 추가되는 것입니다.

단방향 매핑은 한 엔티티에서 다른 엔티티로의 연관관계만을 가지며, 관련된 매핑 정보(FK)는 해당 엔티티에만 존재합니다. 반면, 양방향 매핑은 양쪽 엔티티가 서로를 참조할 수 있으며, mappedBy 속성을 통해 JPA에게 어느 쪽이 연관관계의 주인인지를 알려주어 반대 방향의 업데이트를 통제합니다.

@OneToMany 가 붙은 컬럼에 대해 질문하셨는데, @OneToMany 관계에서는 실제 데이터베이스 테이블에는 별도의 컬럼으로 생성되지 않습니다. 대신, 일대다 관계의 반대편(다 쪽)에 해당하는 엔티티에서 외래 키를 관리하게 됩니다.

아래 링크는 각각의 매핑에 대해 더 상세하게 설명하고 있으므로, 확인하시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.