강의

멘토링

로드맵

Inflearn brand logo image

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

yamsroun님의 프로필 이미지
yamsroun

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

강의 소개

Member와 MemberDetail의 연관관계 주인이 바뀐게 아닌가 싶습니다.

작성

·

44

0

안녕하세요.

Member와 MemberDetail의 연관관계 주인이 바뀐게 아닌가 싶습니다.
비록 1:1 관계이고, 두 객체 인스턴스가 동시에 생성되고 테이블에 영속화 되게끔 설정된 거는 맞지만,
논리적으로 Member 엔터티가 상위 엔터티이고, MemberDetail이 하위 엔터티가 맞는 것 같아요.

추후 Member 엔터티를 참조하는 다른 엔터티가 만들어질텐데,
MemberDetail을 참조하는게 아니라 Member를 참조해야 하고요.

관련한 의견 부탁 드립니다.
감사합니다.

답변 2

0

토비님의 프로필 이미지
토비
지식공유자

Member를 애그리거트로 만들고 루트 엔티티를 Member로 만들었습니다. 그러면 당연히 연관관계의 주인은 Member가 됩니다. 그러니 Member가 MemberDetail을 참조하죠. 그렇게 코드를 만들어는데 어떤 부분에서 연관관계 주인이 바뀌었다는 것인가요?

0

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

Member와 MemberDetail의 연관관계에 대해 궁금한 점을 남겨주셨네요. 이러한 1:1 관계에서는 논리적으로 상위 엔터티와 하위 엔터티를 어떻게 설정하느냐에 따라 다양한 방식으로 접근할 수 있습니다.

논리적으로 상위 엔터티인 Member

  1. 비즈니스 요구 사항: Member가 시스템의 주된 개념이고, 대부분의 기능이 Member를 중심으로 이루어진다면 Member가 상위 엔터티가 되는 것이 자연스럽습니다.

  2. 확장성: 말씀하신 것처럼, 향후 다른 엔터티들이 추가될 계획이라면, Member를 중심으로 하는 것이 더 효율적일 수 있습니다.

  3. 연관 관계 주인: Member가 주 엔터티로 작용하면, MemberDetail은 Member와의 연관 관계에서 보조적인 역할을 하며, Member가 연관 관계의 주인으로 설정되는 것이 적절할 수 있습니다.

설계 시 고려사항

  • 데이터 응집도: 특정 데이터를 얼마나 자주 함께 사용하는지를 고려해 데이터 응집도를 높이는 방향으로 설계할 수 있습니다.
  • 변경의 용이성: 주 엔터티에 따라 변경 시 다른 영향도가 달라질 수 있습니다. 따라서 변경 관리가 더 쉬운 설계를 고려해야 합니다.

위 사항들은 설계 초기 단계에서 잘 고려되어야 하며, 프레임워크나 ORM의 설정에서도 연관 관계 설정을 명확히 해두는 것이 좋습니다.

관련된 토비님의 강의 내용이나 1:1 관계에서의 양방향 연관관계 설정 같은 질문에서 도움될 수 있는 자료를 찾아보시는 것도 추천드립니다.

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

yamsroun님의 프로필 이미지
yamsroun

작성한 질문수

질문하기