diff --git a/src/main/java/umc/meme/shop/domain/review/controller/ReviewController.java b/src/main/java/umc/meme/shop/domain/review/controller/ReviewController.java
index 3f7228d..861c6de 100644
--- a/src/main/java/umc/meme/shop/domain/review/controller/ReviewController.java
+++ b/src/main/java/umc/meme/shop/domain/review/controller/ReviewController.java
@@ -2,6 +2,9 @@
 
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.RequiredArgsConstructor;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.web.PageableDefault;
 import org.springframework.web.bind.annotation.*;
 import umc.meme.shop.domain.review.dto.request.ReviewDto;
 import umc.meme.shop.domain.review.dto.request.DeleteReviewDto;
@@ -18,7 +21,7 @@ public class ReviewController {
     @Operation(summary = "리뷰 리스트 조회", description = "리뷰 리스트를 조회하는 API입니다.")
     @GetMapping("/{portfolioId}")
     public ApiResponse getReviewList(@PathVariable Long portfolioId,
-                                     @RequestParam(value = "page", defaultValue = "0", required = false) int page
+                                     @PageableDefault(size = 30, sort = "portfolio", direction = Sort.Direction.ASC) Pageable page
     ){
         return ApiResponse.SuccessResponse(SuccessStatus.REVIEW_GET, reviewService.getReviewList(portfolioId, page));
     }
diff --git a/src/main/java/umc/meme/shop/domain/review/repository/ReviewRepository.java b/src/main/java/umc/meme/shop/domain/review/repository/ReviewRepository.java
index e052a85..31e6819 100644
--- a/src/main/java/umc/meme/shop/domain/review/repository/ReviewRepository.java
+++ b/src/main/java/umc/meme/shop/domain/review/repository/ReviewRepository.java
@@ -1,11 +1,16 @@
 package umc.meme.shop.domain.review.repository;
 
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import umc.meme.shop.domain.model.entity.Model;
+import umc.meme.shop.domain.portfolio.entity.Portfolio;
 import umc.meme.shop.domain.review.entity.Review;
 
 import java.util.List;
 
 public interface ReviewRepository extends JpaRepository<Review, Long> {
     List<Review> findByModel(Model model);
+
+    Page<Review> findByPortfolio(Portfolio portfolio, Pageable page);
 }
diff --git a/src/main/java/umc/meme/shop/domain/review/service/ReviewService.java b/src/main/java/umc/meme/shop/domain/review/service/ReviewService.java
index 1eb9ce3..058392a 100644
--- a/src/main/java/umc/meme/shop/domain/review/service/ReviewService.java
+++ b/src/main/java/umc/meme/shop/domain/review/service/ReviewService.java
@@ -88,13 +88,12 @@ public List<ReviewResponseDto> getMyReview(Long modelId){
     }
 
     //리뷰 리스트 조회
-    public ReviewListPageDto getReviewList(Long portfolioId, int page) {
+    public ReviewListPageDto getReviewList(Long portfolioId, Pageable page) {
         Portfolio portfolio = portfolioRepository.findById(portfolioId)
                 .orElseThrow(() -> new GlobalException(ErrorStatus.NOT_EXIST_PORTFOLIO));
 
         // list를 page로 변환
-        List<Review> reviewList = portfolio.getReviewList();
-        Page<Review> reviewPage = getPage(page, reviewList);
+        Page<Review> reviewPage = reviewRepository.findByPortfolio(portfolio, page);
 
         return ReviewListPageDto.from(reviewPage);
     }
@@ -111,16 +110,4 @@ public void deleteReview(DeleteReviewDto reviewDto){
 
         reviewRepository.delete(review);
     }
-
-    //TODO: change List -> Page
-    private Page<Review> getPage(int page, List<Review> list){
-        Pageable pageable = PageRequest.of(page, 30);
-
-        int start = (int) pageable.getOffset();
-        int end = Math.min((start + pageable.getPageSize()), list.size());
-
-        //list를 page로 변환
-        return new PageImpl<>(list.subList(start, end),
-                pageable, list.size());
-    }
 }