From 3d966ee32adb6d7dfefcf45e05f1f66063733b59 Mon Sep 17 00:00:00 2001 From: RCNR Date: Thu, 20 Feb 2025 16:28:44 +0900 Subject: [PATCH] =?UTF-8?q?[REFACTOR]=20:=20sql=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20=EC=B5=9C=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dailyMeal/repository/DailyMealRepository.java | 12 ++++++++++++ .../service/command/DailyMealServiceImpl.java | 2 +- .../meal/service/query/MealQueryServiceImpl.java | 2 +- .../service/query/MealPlanQueryServiceImpl.java | 3 +-- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/umc7th/bulk/dailyMeal/repository/DailyMealRepository.java b/src/main/java/umc7th/bulk/dailyMeal/repository/DailyMealRepository.java index fb4bbb3..61fa1cf 100644 --- a/src/main/java/umc7th/bulk/dailyMeal/repository/DailyMealRepository.java +++ b/src/main/java/umc7th/bulk/dailyMeal/repository/DailyMealRepository.java @@ -1,7 +1,19 @@ package umc7th.bulk.dailyMeal.repository; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import umc7th.bulk.dailyMeal.entity.DailyMeal; +import java.util.Optional; + public interface DailyMealRepository extends JpaRepository { + + @Query(""" + SELECT dm FROM DailyMeal dm + JOIN FETCH dm.mealPlan mp + JOIN FETCH mp.user u + WHERE dm.id = :dailyMealId + """) + Optional findByIdWithMealPlanAndUser(@Param("dailyMealId") Long dailyMealId); } diff --git a/src/main/java/umc7th/bulk/dailyMeal/service/command/DailyMealServiceImpl.java b/src/main/java/umc7th/bulk/dailyMeal/service/command/DailyMealServiceImpl.java index ecc4977..3d04642 100644 --- a/src/main/java/umc7th/bulk/dailyMeal/service/command/DailyMealServiceImpl.java +++ b/src/main/java/umc7th/bulk/dailyMeal/service/command/DailyMealServiceImpl.java @@ -42,7 +42,7 @@ public DailyMeal createDailyMeal(MealPlan mealPlan, MealPlanRequestDTO.DailyMeal @Override public DailyMealResponseDTO.DailyMealGetResponseDTO getDailyMeal(Long userId, Long dailyMealId) { - DailyMeal dailyMeal = dailyMealRepository.findById(dailyMealId).orElseThrow(() -> + DailyMeal dailyMeal = dailyMealRepository.findByIdWithMealPlanAndUser(dailyMealId).orElseThrow(() -> new DailyMealException(DailyMealErrorCode.NOT_FOUND)); if (!dailyMeal.getMealPlan().getUser().getId().equals(userId)) { diff --git a/src/main/java/umc7th/bulk/meal/service/query/MealQueryServiceImpl.java b/src/main/java/umc7th/bulk/meal/service/query/MealQueryServiceImpl.java index e18c370..21ce4e5 100644 --- a/src/main/java/umc7th/bulk/meal/service/query/MealQueryServiceImpl.java +++ b/src/main/java/umc7th/bulk/meal/service/query/MealQueryServiceImpl.java @@ -36,7 +36,7 @@ public class MealQueryServiceImpl implements MealQueryService{ public MealResponseDTO.MealPreviewDTO getMealItems(Long userId, Long dailyMealId, MealType type, Long cursorId, int pagSize) { // 하루 식단 확인 - DailyMeal dailyMeal = dailyMealRepository.findById(dailyMealId).orElseThrow( + DailyMeal dailyMeal = dailyMealRepository.findByIdWithMealPlanAndUser(dailyMealId).orElseThrow( () -> new DailyMealException(DailyMealErrorCode.NOT_FOUND)); if (!dailyMeal.getMealPlan().getUser().getId().equals(userId)) { diff --git a/src/main/java/umc7th/bulk/mealPlan/service/query/MealPlanQueryServiceImpl.java b/src/main/java/umc7th/bulk/mealPlan/service/query/MealPlanQueryServiceImpl.java index 9d3067f..f5b20c2 100644 --- a/src/main/java/umc7th/bulk/mealPlan/service/query/MealPlanQueryServiceImpl.java +++ b/src/main/java/umc7th/bulk/mealPlan/service/query/MealPlanQueryServiceImpl.java @@ -27,9 +27,8 @@ public class MealPlanQueryServiceImpl implements MealPlanQueryService { @Override public MealPlan getMealPlan(Long userId, Long mealPlanId) { - User user = userRepository.findById(userId).orElseThrow(() -> new UserException(UserErrorCode.USER_NOT_FOUND)); MealPlan mealPlan = mealPlanRepository.findById(mealPlanId).orElseThrow(() -> new MealPlanException(MealPlanErrorCode.MEAL_PLAN_NOT_FOUND)); - if (!mealPlan.getUser().getId().equals(user.getId()) ) { + if (!mealPlan.getUser().getId().equals(userId) ) { throw new CustomException(GeneralErrorCode.FORBIDDEN_403); } return mealPlan;