Spring Boot JPA/실습

JPA Join과 Config 설정으로 데이터베이스 관계 정리2

qoeka 2025. 1. 8. 20:11

 

 


getReviews 메서드는 특정 상품(productId)의 리뷰 목록을 페이징 처리하여 클라이언트에 반환하는 역할을 한다. 동작 과정을 간략히 설명하면 다음과 같다.

경로 변수와 요청 파라미터 수신

@PathVariable을 통해 URL 경로에서 productId를 가져온다.

@RequestParam을 통해 요청 파라미터 page와 size를 가져온다.

리뷰 서비스 호출

reviewService.getReviews 메서드를 호출하여 productId, page, size를 기반으로 리뷰 목록을 가져오라 할 것이다.

 

getReviews 메서드는 특정 상품(productId)에 대한 리뷰 목록을 페이징 처리하여 반환하는 기능을 수행한다.

 

페이지 요청 생성

PageRequest.of(page - 1, size)를 사용하여 요청 페이지와 크기를 설정한다.

 

리뷰 검색

reviewRepository.findByProductId 메서드를 호출하여, 해당 상품 ID와 페이지 조건에 맞는 리뷰를 조회한다

 

리뷰 변환

조회된 리뷰 목록(reviewsPage)에서 각 리뷰를 반복하며 ReviewResponse 객체로 변환한다.

리뷰의 id, content, rating, nickname, createdAt 정보를 추출하여 ReviewResponse에 설정한다.

 

결과 구성

모든 리뷰 응답(ReviewResponse) 객체를 리스트로 묶고,

ReviewListResponse 객체에 다음 정보를 설정한다.

리뷰 내용 목록(content)

요청한 페이지(page)

페이지 크기(size)

전체 요소 수(totalElements)

전체 페이지 수(totalPages)

 

응답 반환

최종적으로 구성된 ReviewListResponse 객체를 반환한다.

이 메서드는 상품의 리뷰를 페이지 단위로 가져와 클라이언트가 쉽게 이해할 수 있도록 변환하여 반환하는 역할을 수행한다.

 

 

 

 

 

응답 반환

HTTP 상태 코드 200과 함께 ReviewListResponse 객체를 ResponseEntity로 감싸 클라이언트에 반환한다.

이 코드는 상품 리뷰 데이터를 페이징 처리하여 API 응답 형식으로 제공하는 역할을 한다.

 

getReviews 메서드는 특정 상품의 ID를 받아 해당 상품의 리뷰를 페이지와 크기 정보에 따라 가져와 HTTP 200 상태 코드와 함께 클라이언트에 반환하는 역할을 한다.

 

 

 

createReview 메서드는 상품 ID와 리뷰 요청 데이터를 입력받아 토큰에서 사용자 ID를 추출한, 새로운 리뷰 객체를 생성한다. 이 리뷰 객체는 상품 ID, 리뷰 내용, 평점, 사용자 ID를 설정하며, 데이터베이스에 저장한 후 입력받은 리뷰 요청 데이터를 반환한다.

 

 

 

1. updateReview 메서드 설명

updateReview 메서드는 다음과 같은 과정을 거쳐 리뷰를 업데이트한다:

전달받은 id로 리뷰를 검색한다. 해당 리뷰가 존재하지 않으면 "리뷰를 찾을 수 없습니다"라는 예외를 발생시킨다.

JWT 토큰에서 사용자 ID를 추출한다.

새로운 Review 객체를 생성하고, 이를 업데이트할 데이터로 채운다.

리뷰의 제품 ID, 내용, 평점, 사용자 ID를 설정한다.

reviewRepository를 통해 변경된 리뷰를 저장한다.

 

2. deleteReview 메서드 설명

deleteReview 메서드는 다음과 같은 과정을 거쳐 리뷰를 삭제한다:

전달받은 id로 리뷰를 검색한다. 해당 리뷰가 존재하지 않으면 "리뷰를 찾을 수 없습니다"라는 예외를 발생시킨다.

JWT 토큰에서 사용자 ID를 추출한다.

리뷰 작성자 ID와 JWT 토큰에서 추출한 사용자 ID가 다르면 "리뷰를 삭제할 권한이 없습니다"라는 예외를 발생시킨다.

권한이 확인되면 reviewRepository를 통해 해당 리뷰를 삭제한다.

이 두 메서드는 리뷰 업데이트와 삭제 기능을 각각 처리하며, 토큰을 통해 사용자 인증 및 권한 확인을 수행한다.

 

 

 

 

`oneAllUser` 메서드는 사용자의 정보를 조회하여 반환한다:

 

전달받은 JWT 토큰에서 사용자 ID를 추출한다.

추출된 사용자 ID를 기준으로 해당 사용자가 존재하는지 확인한다.

사용자가 존재하면, 데이터베이스에서 해당 사용자의 정보를 가져온다.

 가져온 사용자 정보를 기반으로 `OneUserResponse` 객체를 생성하고, 사용자의 이메일, 닉네임, ID, 생성일자를 설정한다.

설정된 `OneUserResponse` 객체를 반환한다.

사용자가 존재하지 않을 경우, "유저가 없습니다."라는 예외를 발생시킨다.

 

 

oneUserUpdate 메서드는 사용자의 정보를 업데이트한다:

전달받은 JWT 토큰에서 사용자 ID를 추출한다.

추출된 사용자 ID를 기준으로 해당 사용자가 존재하는지 확인한다.

사용자가 존재하면, 데이터베이스에서 해당 사용자의 정보를 가져온다.

가져온용자 객체에 요청으로 전달받은 닉네임으로 업데이트한다.

업데이트된 사용자 정보를 저장소에 저장하여 변경사항을 반영한다.