안녕하세요 조언을 얻고싶습니다.
제가 강의를 보면서 토이 프로젝트로 게시판을 만들고 있습니다.
그래서 엔티티 관계도를 만들어봤고 아래는 제가 구현해 놓은 관계도 입니다.
그런데 여기서 궁금한 점이 있습니다.
이렇게 해도 괜찮은가요? Question, Answer, Comment가 SiterUser에 너무 의존하는거 같아서 의구심이 듭니다. 셋 다 작성자, 추천 필드로 인해 과도하게 연관을 지었나 싶습니다.
마이페이지에서 해당 유저의 작성글과 댓글을 모으는 부분도 구현하려고 하는데 그러면 SiteUser부분에 questionList, AnswerList, CommentList를 추가해 양방향으로 볼 수 있도록 할지 아니면 DB에서 그냥 유저의 아이디와 일치하는 글들을 끌어오는 방식을 할지 고민이 됩니다.
답변 1
1
안녕하세요. JH L님^^
이렇게 해도 괜찮은가요? Question, Answer, Comment가 SiterUser에 너무 의존하는거 같아서 의구심이 듭니다. 셋 다 작성자, 추천 필드로 인해 과도하게 연관을 지었나 싶습니다.
A: Question, Answer, Comment는 SiteUser에 의존해도 괜찮습니다. 이렇게 하면 이후 fetch 조인해서 데이터를 조회할 때 편리하게 회원 데이터도 함께 조회할 수 있는 장점이 있습니다. 물론 설계는 트레이드 오프가 있기 때문에 회원의 id만 참조하도록 하셔도 됩니다. 이렇게 하면 설계가 단순해지고, 회원에 대한 의존을 약하게 가져갈 수 있습니다. 이후 회원 데이터를 분리할 때도 더 편리하겠지요. 대신에 이렇게 하면 회원과 fetch join을 사용할 수 없습니다.
마이페이지에서 해당 유저의 작성글과 댓글을 모으는 부분도 구현하려고 하는데 그러면 SiteUser부분에 questionList, AnswerList, CommentList를 추가해 양방향으로 볼 수 있도록 할지 아니면 DB에서 그냥 유저의 아이디와 일치하는 글들을 끌어오는 방식을 할지 고민이 됩니다.
A: SiteUser가 다른 곳에 의존하는 것은 설계상 좋은 방법이 아닙니다. 이 강의에서 예제를 풍성하기 하게 위해 Member가 Order를 참조하지만, 이것은 좋은 방법이 아닙니다. 생각해보면 회원 데이터는 모든 곳에서 다 필요합니다. 그러면 회원 엔티티는 너무 지저분해지고 변경에 취약해지겠지요?
JH L님 죄송하지만 앞으로는 질문 안내에 있는 것 처럼 강의 학습에 관련된 질문을 올려주시길 부탁드립니다.
저도 마음으로는 도움을 드리고 싶지만, 하루에도 수 많은 분들이 질문을 올려주십니다. 그래서 강의 학습과 관련된 질문에 초점을 맞추는 것이 맞다 생각합니다. 다시한번 이해를 부탁드립니다.
감사합니다^^
OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
0
21
1
sdk 설정 오류
0
59
2
오탈자 - @Transactional
0
58
1
src/test/resources 테스트 경로 문제
0
53
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
67
1
MemberRepositoryTest 실행오류
0
83
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
186
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
146
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
54
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
77
1
기본 생성자
0
62
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
104
1
멤버서비스테스트 부분에서 막힙니다.
0
168
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
118
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
122
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
115
1
24분 27초 연관관계 편의 메서드 위치
0
114
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
112
2
빌드 툴, Gradle
0
61
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
78
2
Repository에서 EntityManager 주입 방식 차이
0
91
1
롬복과 사용자 정의 setter 메서드
0
74
1
주문 목록 조회 fetch join 질문드립니다
0
85
1
dirty checking 질문드립니다.
0
84
1





