페이징 참고자료
https://chaeyami.tistory.com/245
[SpringBoot/JPA] Spring Data JPA 페이징 구현하기
쇼핑몰은 홈에서 상품 리스트를 보여준다. 새 상품별, 인기순 등 조건에 따라 리스트를 보여주려고 생각하니 페이징을 해야겠다는 생각을 하게 됐다. Spring Data JPA는 데이터베이스에서 데이터를
chaeyami.tistory.com
JPA 에서 페이징 기능을 지원하기 때문에 query String 으로 페이지 번호와 한 페이지 안에 보여줄 요소의 개수를 보내 구현하기로 했다. 정렬을 할 필요는 없기때문에 그냥 findAll 을 그대로 사용해주되 Page 로 받아주면 된다
controller 에서는 @RequestParams 를 두개 받아와서 요청에 보내주면 됨
문제1
repostiory 의 메서드 findAllBySchedule (원래는 schedule 에 달린 댓글들을 찾아오는 용도) 의 반환값을 Page<Comment>, 매개변수를 Pagable pagable 로 바꿔야하는데 어떻게 할지 고민이 된다...
해결과정
거짓말처럼... 그냥 한 번 값을 둘 다 넣어봤는데 돌아감
Page<Comment> findAllBySchedule_Id(Long schedule_Id, Pageable pageable);
https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html
JPA Query Methods :: Spring Data JPA
By default, Spring Data JPA uses position-based parameter binding, as described in all the preceding examples. This makes query methods a little error-prone when refactoring regarding the parameter position. To solve this issue, you can use @Param annotati
docs.spring.io
JPA 가 메서드 명을 보고 query method 를 자동으로 생성해주는 건 알았는데 Pageable 은 따로 메서드명에 넣어주지 않아도 동작을 한다는게 신기했다
알아보니 Pageable 은 예외적인 특별 파라미터라서 마지막 파라미터에 넣으면 자동으로 적용됨
결론
Pageable 하게 출력하는건 특별 파라미터라서 마지막 매개변수로 넣어주면 해결됨
스탠다드 반 수업 듣고
오류메시지 출력부분을 바꿔줬다

Exception 을 하나하나 만들었을때는 좀 귀찮아서 몇개 없었는데 이건 만들기 너무 쉬워서 잔뜩 만들어버렸다...

개인적으로 이 핑크색이랑 연두색 조합이 예쁜거같다.. 보기좋아서 한참 보고있었음
API 명세서에 다시 적어줘야할듯하다
귀찮지만... 완성하면 기분좋을것같다
create 는 vaild 에서 잡혀서 예상한 결과가 출력됐는데 update 는 갑자기 서버 오류라고 뜬다

valid 어노테이션이 그냥 함수 안에만 들어있으면 되는줄 알았는데 검증 해야할 매개변수 앞에 붙어야함
ResponseEntity<UpdateScheduleResponse> update(
@PathVariable Long scheduleId,
@Valid @RequestBody UpdateScheduleRequest request,
HttpSession session)
원래 @PathVariable 앞에 붙어있었다...!
requestBody 어노테이션 앞에 붙여주니 정상적으로 작동한다.

결론
@Valid 어노테이션은 검증할 파라미터 앞에만 붙여주기
아무데나 붙이는 거 아님!
죽어라 명세서를 작성했다
https://documenter.getpostman.com/view/51113144/2sBXcBmMaA
'SPARTA 과제 > SPRING' 카테고리의 다른 글
| 심화) LV 0~ LV 4 필수 문제풀이 과정 (0) | 2026.03.04 |
|---|---|
| 숙련) 일정관리앱 트러블슈팅 (4) (0) | 2026.02.13 |
| 숙련) 일정관리앱 트러블슈팅 (2) (0) | 2026.02.11 |
| 숙련) 일정관리앱 트러블슈팅 (1) (0) | 2026.02.11 |
| 숙련) 일정관리앱 업그레이드 초기설정 (1) | 2026.02.10 |