From 61e639ab208c6bffc4626f59c41e8ca488dac262 Mon Sep 17 00:00:00 2001 From: donghoony Date: Thu, 10 Oct 2024 12:09:20 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20NativeQuery=EB=A5=BC=20JPQL?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/OptionGroupRepository.java | 6 ++-- .../repository/OptionItemRepository.java | 16 +++++----- .../repository/QuestionRepository.java | 28 ++++++++--------- .../review/repository/ReviewRepository.java | 30 ++++++++----------- .../repository/SectionRepository.java | 10 +++---- 5 files changed, 43 insertions(+), 47 deletions(-) diff --git a/backend/src/main/java/reviewme/question/repository/OptionGroupRepository.java b/backend/src/main/java/reviewme/question/repository/OptionGroupRepository.java index 3935d6a8f..4f59d608b 100644 --- a/backend/src/main/java/reviewme/question/repository/OptionGroupRepository.java +++ b/backend/src/main/java/reviewme/question/repository/OptionGroupRepository.java @@ -13,8 +13,8 @@ public interface OptionGroupRepository extends JpaRepository Optional findByQuestionId(long questionId); @Query(value = """ - SELECT og.* FROM option_group og - WHERE og.question_id IN (:questionIds) - """, nativeQuery = true) + SELECT og FROM OptionGroup og + WHERE og.questionId IN (:questionIds) + """) List findAllByQuestionIds(List questionIds); } diff --git a/backend/src/main/java/reviewme/question/repository/OptionItemRepository.java b/backend/src/main/java/reviewme/question/repository/OptionItemRepository.java index 6466aa0bf..086c76cfe 100644 --- a/backend/src/main/java/reviewme/question/repository/OptionItemRepository.java +++ b/backend/src/main/java/reviewme/question/repository/OptionItemRepository.java @@ -13,16 +13,16 @@ public interface OptionItemRepository extends JpaRepository { List findAllByOptionGroupId(long optionGroupId); @Query(value = """ - SELECT o.* FROM option_item o - WHERE o.option_type = :#{#optionType.name()} - """, nativeQuery = true) + SELECT o FROM OptionItem o + WHERE o.optionType = :optionType + """) List findAllByOptionType(OptionType optionType); @Query(value = """ - SELECT o.* FROM option_item o - JOIN option_group og - ON o.option_group_id = og.id - WHERE og.question_id IN (:questionIds) - """, nativeQuery = true) + SELECT o FROM OptionItem o + JOIN OptionGroup og + ON o.optionGroupId = og.id + WHERE og.questionId IN :questionIds + """) List findAllByQuestionIds(List questionIds); } diff --git a/backend/src/main/java/reviewme/question/repository/QuestionRepository.java b/backend/src/main/java/reviewme/question/repository/QuestionRepository.java index fdeaea795..66b7381c8 100644 --- a/backend/src/main/java/reviewme/question/repository/QuestionRepository.java +++ b/backend/src/main/java/reviewme/question/repository/QuestionRepository.java @@ -9,22 +9,22 @@ public interface QuestionRepository extends JpaRepository { @Query(value = """ - SELECT q.id FROM question q - JOIN section_question sq - ON q.id = sq.question_id - JOIN template_section ts - ON sq.section_id = ts.section_id - WHERE ts.template_id = :templateId - """, nativeQuery = true) + SELECT q.id FROM Question q + JOIN SectionQuestion sq + ON q.id = sq.questionId + JOIN TemplateSection ts + ON sq.sectionId = ts.sectionId + WHERE ts.templateId = :templateId + """) Set findAllQuestionIdByTemplateId(long templateId); @Query(value = """ - SELECT q.* FROM question q - JOIN section_question sq - ON q.id = sq.question_id - JOIN template_section ts - ON sq.section_id = ts.section_id - WHERE ts.template_id = :templateId - """, nativeQuery = true) + SELECT q FROM Question q + JOIN SectionQuestion sq + ON q.id = sq.questionId + JOIN TemplateSection ts + ON sq.sectionId = ts.sectionId + WHERE ts.templateId = :templateId + """) List findAllByTemplatedId(long templateId); } diff --git a/backend/src/main/java/reviewme/review/repository/ReviewRepository.java b/backend/src/main/java/reviewme/review/repository/ReviewRepository.java index 26aacb9bd..7dd5abadd 100644 --- a/backend/src/main/java/reviewme/review/repository/ReviewRepository.java +++ b/backend/src/main/java/reviewme/review/repository/ReviewRepository.java @@ -10,32 +10,28 @@ public interface ReviewRepository extends JpaRepository { @Query(value = """ - SELECT r.* FROM new_review r - WHERE r.review_group_id = :reviewGroupId - ORDER BY r.created_at DESC - """, nativeQuery = true) + SELECT r FROM Review r + WHERE r.reviewGroupId = :reviewGroupId + ORDER BY r.createdAt DESC + """) List findAllByGroupId(long reviewGroupId); @Query(value = """ - SELECT r.* FROM new_review r - WHERE r.review_group_id = :reviewGroupId + SELECT r FROM Review r + WHERE r.reviewGroupId = :reviewGroupId AND (:lastReviewId IS NULL OR r.id < :lastReviewId) - ORDER BY r.created_at DESC, r.id DESC + ORDER BY r.createdAt DESC, r.id DESC LIMIT :limit - """, nativeQuery = true) + """) List findByReviewGroupIdWithLimit(long reviewGroupId, Long lastReviewId, int limit); Optional findByIdAndReviewGroupId(long reviewId, long reviewGroupId); @Query(value = """ - SELECT COUNT(r.id) FROM new_review r - WHERE r.review_group_id = :reviewGroupId + SELECT COUNT(r.id) > 0 FROM Review r + WHERE r.reviewGroupId = :reviewGroupId AND r.id < :reviewId - AND CAST(r.created_at AS DATE) <= :createdDate - """, nativeQuery = true) - Long existsOlderReviewInGroupInLong(long reviewGroupId, long reviewId, LocalDate createdDate); - - default boolean existsOlderReviewInGroup(long reviewGroupId, long reviewId, LocalDate createdDate) { - return existsOlderReviewInGroupInLong(reviewGroupId, reviewId, createdDate) > 0; - } + AND cast(r.createdAt as java.time.LocalDate) <= :createdDate + """) + boolean existsOlderReviewInGroup(long reviewGroupId, long reviewId, LocalDate createdDate); } diff --git a/backend/src/main/java/reviewme/template/repository/SectionRepository.java b/backend/src/main/java/reviewme/template/repository/SectionRepository.java index bcb36c92f..7bd5b27be 100644 --- a/backend/src/main/java/reviewme/template/repository/SectionRepository.java +++ b/backend/src/main/java/reviewme/template/repository/SectionRepository.java @@ -10,11 +10,11 @@ public interface SectionRepository extends JpaRepository { @Query(value = """ - SELECT s.* FROM section s - JOIN template_section ts - ON s.id = ts.section_id - WHERE ts.template_id = :templateId + SELECT s FROM Section s + JOIN TemplateSection ts + ON s.id = ts.sectionId + WHERE ts.templateId = :templateId ORDER BY s.position ASC - """, nativeQuery = true) + """) List
findAllByTemplateId(long templateId); }