Skip to content

[7주차/미키] 워크북 제출합니다#36

Open
migi0401 wants to merge 2 commits into
UMC-Inha:micky/mainfrom
migi0401:main
Open

[7주차/미키] 워크북 제출합니다#36
migi0401 wants to merge 2 commits into
UMC-Inha:micky/mainfrom
migi0401:main

Conversation

@migi0401
Copy link
Copy Markdown

✅ 실습 체크리스트

  • 이론 학습을 완료하셨나요?
  • 미션 요구사항을 모두 이해하셨나요?
  • 실습을 수행하기 위한 공부를 완료하셨나요?
  • 실습 요구사항을 모두 완료하셨나요?

✅ 컨벤션 체크리스트

  • 디렉토리 구조 컨벤션을 잘 지켰나요?
  • pr 제목을 컨벤션에 맞게 작성하였나요?
  • pr에 해당되는 이슈를 연결하였나요?(중요)
  • 적절한 라벨을 설정하였나요?
  • 파트장에게 code review를 요청하기 위해 reviewer를 등록하였나요?
  • 닉네임/main 브랜치의 최신 상태를 반영하고 있는지 확인했나요?(매우 중요!)

📌 주안점

@migi0401 migi0401 requested a review from YoungJJun May 12, 2026 13:35
@migi0401 migi0401 self-assigned this May 12, 2026
@migi0401 migi0401 linked an issue May 12, 2026 that may be closed by this pull request
Copy link
Copy Markdown
Collaborator

@YoungJJun YoungJJun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

7주차 피드백

  1. (미션) 내가 진행중인 미션 조회하기 관련해서 @RequestBody 를 요구하고 있고 구현은 @RequestParam 으로 되어있습니다.

    토큰 적용시 두 방법 모두 사용하지 않게 될 것 같아서 필수 수정할 필요는 없어보이나 프로젝트 개발이 처음이시니 Body로 변경하는거 연습겸 진행하는것도 좋을 것 같습니다.

    Body로 수정하기 위해서 코드에서 어떤 부분을 수정해야하고 왜 그래야 하는지 생각해보는 정도까지만 공부하셔도 @RequestBody , @RequestParam 차이와 사용하는 상황을 확실히 공부하고 넘어가실 수 있을 것 같아요.

  2. MissionQueryService에서 인자로 PageNumber를 전달받는 경우에 @Min , @Max 등 어노테이션 사용해서 validation 체크 해주시면 좋을 것 같아요.

  3. ReviewQueryService

    reviewRepository.findReviewsByMemberIdAndIdLessThanOrderByIdDesc(
                                memberId,
                                idCursor,
                                pageRequest
                        );
                        break;

    위 코드가 있는데 reviewRepository는 분명 어떤 결과를 return 할 것 같은데 호출만하고 결과를 안받고 있는 것 같아요.

  4. src/main/java/umc/domain/review/dto/ReviewReqDTO.java

    ReviewDTO에 String text가 not null로 설정되어 있습니다.

    @NotNull(message = "리뷰는 빈칸일 수 없습니다.")
                String text

    NotNull은 말그대로 null만 아니면 되기 때문에 빈 문자열을 넣을 수 있습니다! 메시지대로 리뷰에 빈 메시지를 넣지 못하게 하고싶으시면 @NotBlank 를 사용할 수 있습니다.

  5. JPQL 관련 메서드 파라미터에 @Param 누락

        @Query("SELECT r FROM Review r WHERE r.member.id = :memberId " +
                "AND (r.score < :scoreCursor OR (r.score = :scoreCursor AND r.id < :idCursor)) " +
                "ORDER BY r.score DESC, r.id DESC")
        Slice<Review> findReviewsByScoreCursor(Long memberId, Float scoreCursor, long idCursor, PageRequest pageRequest);

    Query를 보시면 memberId, scoreCursor, idCursor등 값을 필요로합니다. 그런데 메서드 인자에 보면 @Param 이 없어서 에러가 날 가능성이 있을 것 같아요. 스프링에서 자동으로 매핑해주면 문제 없을 것 같지만 혹시 모르는 상황을 대비해 수정하면 좋을 것 같아요.

    여기서 에러가 발생할 수 있다는건 컴파일러 옵션 중 -parameters 옵션이 켜져있으면 문제가 없고 꺼져있으면 매핑이 안된다고 합니다.
    SpringBoot 플러그인으로 빌드시 자동적용된다고 하지만 IDE 직접 실행시 런타임 에러 발생할 수 있어서 방어적으로 코딩하면 좋을 것 같습니다.

    Slice<Review> findReviewsByScoreCursor(
        @Param("memberId") Long memberId,
        @Param("scoreCursor") Float scoreCursor,
        @Param("idCursor") long idCursor,
        PageRequest pageRequest
    );

    이런식으로 @Param 추가할 수 있습니다.


미키 이번주도 수고하셨습니다~ 스웨거 미션은 지난주처럼 10th Spring 레포 mission 폴더에서 mission.md에 추가해주세요!

throw new ReviewException(ReviewErrorCode.REVIEW_NOT_FOUND);
}

}else{//커서 없을 때 첫 페이지 조회
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넘어가는 페이지 없을 때, 첫 페이지 조회 로직까지 구현해주신 점 좋은 것 같아요!

Long memberId,
@NotNull(message = "리뷰 평점은 필수입니다.")
Float score,
@NotNull(message = "리뷰는 빈칸일 수 없습니다.")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스프링장님 리뷰대로 @NotNull 대신 @notblank 적으면 좋을 것 같아요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Chapter07_API 설계 심화 - 페이징

3 participants