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

Wraith님의 프로필 이미지

작성한 질문수

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

도메인 모델과 테이블 설계

안녕하세요 조언을 얻고싶습니다.

해결된 질문

23.03.18 02:57 작성

·

388

·

수정됨

0

제가 강의를 보면서 토이 프로젝트로 게시판을 만들고 있습니다.

그래서 엔티티 관계도를 만들어봤고 아래는 제가 구현해 놓은 관계도 입니다.

그런데 여기서 궁금한 점이 있습니다.

  1. 이렇게 해도 괜찮은가요? Question, Answer, Comment가 SiterUser에 너무 의존하는거 같아서 의구심이 듭니다. 셋 다 작성자, 추천 필드로 인해 과도하게 연관을 지었나 싶습니다.

  2. 마이페이지에서 해당 유저의 작성글과 댓글을 모으는 부분도 구현하려고 하는데 그러면 SiteUser부분에 questionList, AnswerList, CommentList를 추가해 양방향으로 볼 수 있도록 할지 아니면 DB에서 그냥 유저의 아이디와 일치하는 글들을 끌어오는 방식을 할지 고민이 됩니다.

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

2023. 03. 20. 11:58

안녕하세요. JH L님^^

  1. 이렇게 해도 괜찮은가요? Question, Answer, Comment가 SiterUser에 너무 의존하는거 같아서 의구심이 듭니다. 셋 다 작성자, 추천 필드로 인해 과도하게 연관을 지었나 싶습니다.

    A: Question, Answer, Comment는 SiteUser에 의존해도 괜찮습니다. 이렇게 하면 이후 fetch 조인해서 데이터를 조회할 때 편리하게 회원 데이터도 함께 조회할 수 있는 장점이 있습니다. 물론 설계는 트레이드 오프가 있기 때문에 회원의 id만 참조하도록 하셔도 됩니다. 이렇게 하면 설계가 단순해지고, 회원에 대한 의존을 약하게 가져갈 수 있습니다. 이후 회원 데이터를 분리할 때도 더 편리하겠지요. 대신에 이렇게 하면 회원과 fetch join을 사용할 수 없습니다.

     

  2. 마이페이지에서 해당 유저의 작성글과 댓글을 모으는 부분도 구현하려고 하는데 그러면 SiteUser부분에 questionList, AnswerList, CommentList를 추가해 양방향으로 볼 수 있도록 할지 아니면 DB에서 그냥 유저의 아이디와 일치하는 글들을 끌어오는 방식을 할지 고민이 됩니다.

    A: SiteUser가 다른 곳에 의존하는 것은 설계상 좋은 방법이 아닙니다. 이 강의에서 예제를 풍성하기 하게 위해 Member가 Order를 참조하지만, 이것은 좋은 방법이 아닙니다. 생각해보면 회원 데이터는 모든 곳에서 다 필요합니다. 그러면 회원 엔티티는 너무 지저분해지고 변경에 취약해지겠지요?

JH L님 죄송하지만 앞으로는 질문 안내에 있는 것 처럼 강의 학습에 관련된 질문을 올려주시길 부탁드립니다.

저도 마음으로는 도움을 드리고 싶지만, 하루에도 수 많은 분들이 질문을 올려주십니다. 그래서 강의 학습과 관련된 질문에 초점을 맞추는 것이 맞다 생각합니다. 다시한번 이해를 부탁드립니다.

감사합니다^^

Wraith님의 프로필 이미지
Wraith
질문자

2023. 03. 20. 13:54

넵 조언감사드립니다. 다음부턴 강의 내용을 초점으로 질문드리겠습니다!

Wraith님의 프로필 이미지

작성한 질문수

질문하기