From 45e937377a392d7683fcf0dd83e3dcecf12d03e6 Mon Sep 17 00:00:00 2001 From: EunChanNam Date: Mon, 4 Dec 2023 13:34:53 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A6=AC=EB=B7=B0=20=EC=BF=BC=EB=A6=AC?= =?UTF-8?q?=20=EC=84=B1=EB=8A=A5=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EB=A5=BC=20?= =?UTF-8?q?=EC=9C=84=ED=95=9C=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 조인을 사용하는 쿼리와 사용하지 않는 쿼리 --- .../global/config/WebConfig.java | 3 ++- .../global/utils/RedisUtils.java | 3 ++- .../review/application/LikeReviewService.java | 2 +- .../ReviewQueryTestController.java | 22 +++++++++---------- src/main/resources/application-dev.yml | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/inq/wishhair/wesharewishhair/global/config/WebConfig.java b/src/main/java/com/inq/wishhair/wesharewishhair/global/config/WebConfig.java index 67febb3..217c691 100644 --- a/src/main/java/com/inq/wishhair/wesharewishhair/global/config/WebConfig.java +++ b/src/main/java/com/inq/wishhair/wesharewishhair/global/config/WebConfig.java @@ -45,7 +45,8 @@ public void addInterceptors(final InterceptorRegistry registry) { .addExcludePathPattern("/api/users/refresh/*") .addExcludePathPattern("/api/like/test/clean") .addExcludePathPattern("/api/like/test/count/**") - .addExcludePathPattern("/api/email/*"); + .addExcludePathPattern("/api/email/*") + .addExcludePathPattern("/api/reviews/test/**"); registry .addInterceptor(pathMatcherInterceptor) diff --git a/src/main/java/com/inq/wishhair/wesharewishhair/global/utils/RedisUtils.java b/src/main/java/com/inq/wishhair/wesharewishhair/global/utils/RedisUtils.java index be7bc8b..d7c0718 100644 --- a/src/main/java/com/inq/wishhair/wesharewishhair/global/utils/RedisUtils.java +++ b/src/main/java/com/inq/wishhair/wesharewishhair/global/utils/RedisUtils.java @@ -36,8 +36,9 @@ public void decreaseData(Long key) { } public Optional getData(Long key) { + Long value = redisTemplate.opsForValue().get(String.valueOf(key)); return Optional.ofNullable( - redisTemplate.opsForValue().get(String.valueOf(key)) + value ); } } diff --git a/src/main/java/com/inq/wishhair/wesharewishhair/review/application/LikeReviewService.java b/src/main/java/com/inq/wishhair/wesharewishhair/review/application/LikeReviewService.java index 9f59b60..ff469b2 100644 --- a/src/main/java/com/inq/wishhair/wesharewishhair/review/application/LikeReviewService.java +++ b/src/main/java/com/inq/wishhair/wesharewishhair/review/application/LikeReviewService.java @@ -60,7 +60,7 @@ public LikeReviewResponse checkIsLiking(Long userId, Long reviewId) { public Long getLikeCount(Long reviewId) { return redisUtils.getData(reviewId) - .orElse(updateLikeCountFromRedis(reviewId)); + .orElseGet(() -> updateLikeCountFromRedis(reviewId)); } public List getLikeCounts(List reviewIds) { diff --git a/src/main/java/com/inq/wishhair/wesharewishhair/review/presentation/ReviewQueryTestController.java b/src/main/java/com/inq/wishhair/wesharewishhair/review/presentation/ReviewQueryTestController.java index ba368af..f524082 100644 --- a/src/main/java/com/inq/wishhair/wesharewishhair/review/presentation/ReviewQueryTestController.java +++ b/src/main/java/com/inq/wishhair/wesharewishhair/review/presentation/ReviewQueryTestController.java @@ -3,15 +3,13 @@ import java.util.List; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.inq.wishhair.wesharewishhair.global.dto.response.ResponseWrapper; -import com.inq.wishhair.wesharewishhair.review.application.dto.response.ReviewResponse; -import com.inq.wishhair.wesharewishhair.review.application.dto.response.ReviewResponseAssembler; +import com.inq.wishhair.wesharewishhair.review.application.LikeReviewService; import com.inq.wishhair.wesharewishhair.review.domain.entity.Review; import com.inq.wishhair.wesharewishhair.review.infrastructure.ReviewQueryDslRepository; -import com.inq.wishhair.wesharewishhair.review.infrastructure.ReviewQueryResponse; import lombok.RequiredArgsConstructor; @@ -21,19 +19,19 @@ public class ReviewQueryTestController { private final ReviewQueryDslRepository reviewQueryDslRepository; + private final LikeReviewService likeReviewService; @Transactional(readOnly = true) - public ResponseWrapper withJoin() { - List reviews = reviewQueryDslRepository.joinWithLikeQuery() - .stream() - .map(ReviewQueryResponse::getReview) - .toList(); - return ReviewResponseAssembler.toWrappedReviewResponse(reviews); + @GetMapping("/join") + public void withJoin() { + reviewQueryDslRepository.joinWithLikeQuery(); } @Transactional(readOnly = true) - public ResponseWrapper withoutJoin() { + @GetMapping("/no_join") + public void withoutJoin() { List reviews = reviewQueryDslRepository.noJoinQuery(); - return ReviewResponseAssembler.toWrappedReviewResponse(reviews); + List reviewIds = reviews.stream().map(Review::getId).toList(); + likeReviewService.getLikeCounts(reviewIds); } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index b75eb5f..ff4e3d5 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -5,7 +5,7 @@ server: spring: data: redis: - host: 3.21.14.25 + host: localhost port: 6379 expire-time: 21600000