인프런 커뮤니티 질문&답변

opix0306님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

양방향 연관관계를 짓는 기준

작성

·

144

0

안녕하세요. 연관관계를 맺으면서 선생님께서 양방향 연관관계는 비즈니스 로직이 복잡해지는 경우가 많으니 다대일 단방향으로 관계를 맺고 개발 진행중에 양방향으로 연관관계를 가져야할 필요성을 느낄 때 그때 양방향 연관관계를 매핑하라고 하셨습니다.

그 필요성에 대해 궁금해서 질문드립니다.

게시글과 댓글의 관계를 댓글(N) 게시글(1) 로 다대일 단방향으로 관계를 맺었고, 개발을 하다가 게시글을 조회할 때 관련된 댓글들도 한번에 가져오기 위해 페치조인을 사용하려고 합니다.

그런데 조인을 하려면 게시글에 댓글에 대한 참조가 없어 조인을 할 수 없어 양방향 연관관계를 맺어줘야 하나 생각했습니다.

제가 생각한 양방향 연관관계를 맺어야하는 필요성이 이런 경우가 맞을까요?

양방향 연관관계를 맺는 필요성에 대한 기준이 있는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. opix0306님의 질문에 대하여, 양방향 연관관계 설정에 대한 이해가 필요해 보입니다. 질문에서 언급한 “양방향 연관관계를 맺어야 하는 필요성”에 대한 구체적 기준과 예시에 대해 말씀드리겠습니다.

양방향 연관관계는 특히, 객체 지향 프로그래밍에서 객체 간의 관계를 설계할 때 중요한 개념입니다. 이는 한 쪽 방향에서만 연관 관계를 설정하는 단방향 연관관계와 달리, 양 측에서 서로를 참조할 수 있도록 하는 것을 의미합니다.

양방향 연관관계를 설정해야 하는 몇 가지 필요성에는 다음과 같은 상황들이 포함됩니다:

  1. 엔티티 간의 탐색 효율성: 양방향 연관관계는 한 엔티티에서 관련 엔티티에 보다 손쉽게 접근할 수 있게 해줍니다. 예를 들어, 게시글 엔티티에서 댓글 엔티티로의 접근이 필요할 때, 양방향 연관관계가 설정되어 있다면 게시글 객체를 통해 관련 댓글을 바로 조회할 수 있습니다.

  2. 비즈니스 로직상의 요구: 어떤 비즈니스 로직이 양쪽 엔티티 간의 연관 관계를 필요로 하는 경우, 양방향 연관관계 설정이 요구될 수 있습니다. 예를 들어, 게시글에 댓글이 달릴 때마다 게시글의 댓글 카운트를 업데이트해야 한다면, 이런 종류의 로직을 구현하기 위해서는 양방향 연관관계가 유용할 수 있습니다.

  3. JPA의 쿼리 성능 최적화: JPA를 사용할 때, 양방향 연관관계는 특정 쿼리들을 보다 효율적으로 작성하는 데 도움을 줄 수 있습니다. 특히, 연관된 엔티티들 사이에서 데이터를 조인하기 위해 JPQL이나 Criteria 쿼리를 작성할 때 유리하다고 할 수 있습니다.

양방향 연관관계 설정에 대한 좀 더 자세한 설명과 예시는 아래 링크에서 확인할 수 있습니다:
- 연관관계 매핑 분석 - 이 질문과 답변에서 일대다, 다대일 관계와 같은 양방향 연관관계에 대한 기본적인 이해를 다루고 있습니다.

질문에서 언급한 “게시글 조회 시 관련 댓글들을 한번에 가져오기 위한 페치조인”의 경우에 양방향 연관관게를 설정하는 것은 매우 타당한 예시 중 하나입니다. 이는 데이터를 보다 효율적으로 로드하기 위한 목적으로 자주 사용되며, 실무에서도 이러한 상황이 발생했을 때 양방향 연관관계를 설정하게 됩니다.

양방향 연관관계 설정은 특정 상황과 요구 사항에 따라 결정되어야 하며, 각각의 경우에 따라 그 필요성이 다를 수 있습니다.

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

opix0306님의 프로필 이미지

작성한 질문수

질문하기