QnA에서 Join 필드 표현법
강사님의 코드를 보니 Question 클래스 등에 id, userId, title, content 등만 넣어두신 것 같은데 일반적으로 자주 표현되는 다른 필드를 표현하려면 어떻게 하는 것이 좋을까요?
예를 들어 QnA 조회시 질문 목록에서 질문 작성자의 이름이 표시되는 형태가 많습니다. 이때 그렇다면 QnAResponse 에 questionAuthor 필드가 있어야 할 것 같은데 해당 필드가 추가된다면 어떻게 username 정보를 넣어주어야 할지 궁금합니다.
1안. Question 클래스가 userId 대신 User 클래스를 가지고 있는다...
2안. Controller에서 user 목록을 조회해서 response 팩토리 메서드에서 매핑한다.
2안이 더 나을 것 같긴 합니다만, 리스트이다 보니 매핑로직이 복잡해 질 것 같기도 하고... qnsList->question->userId 모아서 userList조회... map생성 후 매핑 등등 이런 과정이 괜찮은건지 궁금합니다.
또 2안이 더 나은 방법이라면 response에 노출해야하는 join 필드 5-6개 처럼 많을때는 어떻게 처리하시는 편인지도 궁금합니다
回答 1
0
안녕하세요 질문 감사드립니다! 아주 좋은 질문입니다! 😃
사실 일반적인 상황에서는 1번의 방향성이 쉽게 접근가능하고 명확함이 올라간다고 생각합니다
다만 꼭 User클래스를 갖지 않더라도 author 라는 필드로 갖고 있을 수도 있을 것 같습니다
그런데 우리 강의의 정의한 시스템 상황에서 문제가나 하나 발생합니다
지금 우리 상황에서는 User에 대한 데이터를 별도 UserService 와 UserDB로 분리하여 운영하고 있습니다
즉 우리가 예제 코드로 바라보고 있는 곳에선 UserDB를 접근하지 못하고 UserName을 알고 싶으면 API로 가져와야합니다 😅
이 상황이라서 2안으로 가더라도 UserService의 API를 호출해서 목록을 조합해야하기 때문에 UserService API가 성능이 느려진다면 QnA목록 조회 API도 느려지게 되는 문제가 생기게 됩니다.
그래서 현실적으로 우리 상황에서 해당 요구사항을 처리하려면 Question을 추가할때 userName을 DB에 추가하도록 해야 할 것 같습니다 (Answer의 경우는 관리자 등록 이므로 제외 가능 할 듯하네요)
(물론 UserService의 User정보를 동기화 시켜두는 전략도 있지만 그 전략은 이것 때문에 작업하기에는 다소 과하지 않나 싶단 생각이 듭니다)
또 추가적으로 이 작업을 하려면 G/W단에서 UserName을 같이 넘겨주는 작업을 해야할 것 같습니다
(현재 가정은 UserId만 넘겨주는 상태)
이 강의에서는 해당 내용을 추가하면 집중을 의도하고자한 부분이 흐려지기 때문에 제외했습니다 그래서 우선 ID만 내려주도록 구성해두었습니다!
이런 전략은 이번 강의의 메인 주제와 벗어나긴하지만 충분히 생각해볼 수 있는 부분인 것 같습니다 😃
좋은 질문 감사드립니다! 모쪼록 답이 되었길 바랍니다! 감사합니다!
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
47
1
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
44
2
SettlementTargetRepository Jquery 질문
1
48
2
부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?
1
60
2
엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??
1
67
2
제미니님 안녕하세요!
1
73
2
개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조
1
80
2
프로덕트와 프로덕트카테고리 사이의 삭제 정책
1
75
2
새로 개발한다면 구현 순서
1
133
1
의존 방향에 대한 고민
1
122
2
어드민(Back-office)에서 예약 변경 시, '할인 조건 재검증(쿠폰 회수)' vs '기존 혜택 유지' 중 어떤 정책이 일반적인가요?
1
95
2
OrderKeyGenerator 인스턴스화 generate() 질문
1
83
1
외부 API 통합 시 데이터 제어 범위 설계 질문
1
96
1
PG 결제 승인 로직
1
128
2
결제서비스 콜백 동시성문제 가능성
1
106
2
굿
1
107
1
도메인/엔티티 분리 상황에서 쓰기 작업 하는 방법
1
135
2
도메인 객체와 엔티티 객체 사용
1
137
2
CouponService 의존성 의문
1
96
2
상품 목록 조회 고도화 질문
1
111
2
표현 계층에서의 접근 지점이 다양해지는것과 이를 해결하기 위한 파사드의 도입에 대해 제미니님의 생각이 궁금합니다.
1
123
2
제품상세 코드 느끼기
1
144
2
격벽의 순환 참조(?)
1
113
2
결제 관련 서킷 브레이커 전략, 데이터 정합성 및 타임아웃 설정 질문
2
174
2

