@@ -5,11 +5,14 @@
 import org.springframework.lang.Nullable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import reviewme.review.domain.Review;
 import reviewme.review.repository.ReviewRepository;
+import reviewme.review.service.dto.response.list.AuthoredReviewElementResponse;
 import reviewme.review.service.dto.response.list.AuthoredReviewsResponse;
 import reviewme.review.service.dto.response.list.ReceivedReviewPageElementResponse;
 import reviewme.review.service.dto.response.list.ReceivedReviewPageResponse;
-import reviewme.review.service.mapper.ReviewListMapper;
+import reviewme.review.service.mapper.AuthoredReviewMapper;
+import reviewme.review.service.mapper.ReceivedReviewMapper;
 import reviewme.reviewgroup.domain.ReviewGroup;
 import reviewme.reviewgroup.domain.exception.ReviewGroupNotFoundException;
 import reviewme.reviewgroup.repository.ReviewGroupRepository;
@@ -20,43 +23,49 @@
 public class ReviewListLookupService {
 
     private final ReviewRepository reviewRepository;
-    private final ReviewListMapper reviewListMapper;
     private final ReviewGroupRepository reviewGroupRepository;
 
+    private final ReceivedReviewMapper receivedReviewMapper;
+    private final AuthoredReviewMapper authoredReviewMapper;
+
     @Transactional(readOnly = true)
     public ReceivedReviewPageResponse getReceivedReviews(long reviewGroupId,
-                                                         @Nullable Long lastReviewId, @Nullable Integer size) {
+                                                         @Nullable Long lastReviewId,
+                                                         @Nullable Integer size) {
         ReviewGroup reviewGroup = reviewGroupRepository.findById(reviewGroupId)
                 .orElseThrow(() -> new ReviewGroupNotFoundException(reviewGroupId));
+
         PageSize pageSize = new PageSize(size);
-        List<ReceivedReviewPageElementResponse> reviewListResponse
-                = reviewListMapper.mapToReviewList(reviewGroup, lastReviewId, pageSize.getSize());
-        long newLastReviewId = calculateLastReviewId(reviewListResponse);
-        boolean isLastPage = isLastPage(reviewListResponse, reviewGroup);
+        List<Review> reviews = reviewRepository.findAllByReviewGroupIdWithLimit(
+                reviewGroup.getId(), lastReviewId, pageSize.getSize() + 1);
+
+        boolean isLastPage = reviews.size() <= pageSize.getSize();
+        if (!isLastPage) {
+            reviews = reviews.subList(0, pageSize.getSize());
+        }
+
+        List<ReceivedReviewPageElementResponse> elements = receivedReviewMapper.mapToReviewList(reviews);
+        long newLastReviewId = (!elements.isEmpty()) ? elements.get(elements.size() - 1).reviewId() : 0L;
+
         return new ReceivedReviewPageResponse(
-                reviewGroup.getReviewee(), reviewGroup.getProjectName(), newLastReviewId, isLastPage, reviewListResponse
-        );
+                reviewGroup.getReviewee(), reviewGroup.getProjectName(), newLastReviewId, isLastPage, elements);
     }
 
-    public AuthoredReviewsResponse getAuthoredReviews(Long lastReviewId, Integer size, long loginMemberId) {
-        // TODO: 생성일자 최신순 정렬
-        return null;
-    }
+    public AuthoredReviewsResponse getAuthoredReviews(long loginMemberId,
+                                                      @Nullable Long lastReviewId,
+                                                      @Nullable Integer size) {
+        PageSize pageSize = new PageSize(size);
+        List<Review> reviews = reviewRepository.findAllByMemberIdWithLimit(
+                loginMemberId, lastReviewId, pageSize.getSize() + 1);
 
-    private long calculateLastReviewId(List<ReceivedReviewPageElementResponse> elements) {
-        if (elements.isEmpty()) {
-            return 0;
+        boolean isLastPage = reviews.size() <= pageSize.getSize();
+        if (!isLastPage) {
+            reviews = reviews.subList(0, pageSize.getSize());
         }
-        return elements.get(elements.size() - 1).reviewId();
-    }
 
-    private boolean isLastPage(List<ReceivedReviewPageElementResponse> elements, ReviewGroup reviewGroup) {
-        if (elements.isEmpty()) {
-            return true;
-        }
+        List<AuthoredReviewElementResponse> elements = authoredReviewMapper.mapToReviewList(reviews);
+        long newLastReviewId = (!elements.isEmpty()) ? elements.get(elements.size() - 1).reviewId() : 0L;
 
-        ReceivedReviewPageElementResponse lastReviewResponse = elements.get(elements.size() - 1);
-        return !reviewRepository.existsOlderReviewInGroup(
-                reviewGroup.getId(), lastReviewResponse.reviewId(), lastReviewResponse.createdAt());
+        return new AuthoredReviewsResponse(newLastReviewId, isLastPage, elements);
     }
 }

리뷰: 더 가독성 좋게 바뀌었네요😁
isLastPage 계산하는 부분과 newLastReviewId 구하는 부분이 겹쳐서 추상화를 할 수 있을것도 같은데,.
그렇게 되면 "리뷰가 없으면 last_xxx_id 가 0이다"와 같은 것들도 통일할 수 있고요

일단 빠른 기능 구현을 위해 넘어가고 나중에 생각해봐요~