[7주차/그린] 워크북 제출합니다#42
Conversation
There was a problem hiding this comment.
7주차 피드백
-
모든 미션 잘 구현해주셨습니다!
-
페이지네이션과 Request Body 에 대한 Validation Check 또한 적절하고, 이를 처리하는 GeneralExceptionAdvice도 잘 구현해주셨습니다.
-
@RequestParam,@PathVariable에 대한 Valid 체크미션 내용에
@RequestBody에 대한 검증만 언급되어 있어서 이 부분만 진행된 것 같아요.pageNumber,pageSize(미션 조회)size(리뷰 조회)
위 파라미터에 대해 default 값만 설정되어 있는 것 같습니다.
@Min,@Max같은 검증도 추가해주시면 좋을 것 같아요~ -
(추가) 너무 잘 해주셔서 특별히 피드백할 부분이 없어서 찾아봤어요!
MemberMissionRepository.findByMemberAndStatusesWithOffset()에서join fetch와Pageable을 함께 사용하는데 이 부분에 이슈가 있다고 합니다.WARN : HHH000104일대다 또는 다대다 컬렉션을 JOIN FETCH + Pageable 사용하면 Hibernate가 페이징을 DB에서 처리하지 않고 메모리에서 처리하게 됩니다.
여기서 데이터 양이 많으면 네트워크 부하, 메모리 사용량 증가, 최악의 경우 OOM 가능성이 있다고 합니다.
해결법은
@EntityGraph나@BatchSize로 개선할 수 있는 것 같은데 이 부분은 저도 더 찾아봐야 할 것 같아요.현재 MemberMission이 충분히 데이터가 많아질 수 있는 상황인 것 같아서 관련 내용 한 번 찾아보시면 좋을 것 같습니다 🙂
그린 7주차도 수고하셨습니다! 피드백 4번 내용은 저도 처음 알게된 내용이라 신기하네용. 다음주도 화이팅해주세요~ 💯
|
피드백 감사합니다! 말씀해주신 RequestParam/PathVariable 검증은 @min, @max, @positive를 추가하고, 관련 validation 예외도 공통 응답으로 처리하도록 해보았습니다! fetch join + Pageable 부분도 다시 확인해봤습니다. 기존 쿼리는 MemberMission -> Mission -> Store의 to-one fetch join이라 컬렉션 fetch join 케이스와는 다르지만, 피드백 반영과 학습 목적상 Pageable 쿼리에서는 id만 먼저 조회하고 이후 Mission/Store를 fetch join하는 2-step query로 한번 변경해보앗습니다. 관련해서 정리한 내용은
|
| hasNext | ||
| ); | ||
| } | ||
|
|
There was a problem hiding this comment.
서비스 로직을 역할별로 private 메서드로 분리하신 점이 좋았습니다. 읽는 입장에서 로직을 따라가기 쉬웠고, 관련 책임이 따로 빠져 있어서 유지보수에도 유리해 보이네요! 저도 다음에 반영하도록 하겠습니다!
✅ 실습 체크리스트
✅ 컨벤션 체크리스트