From 9168087f6727dd54cb0ce158400652cf35f76e4f Mon Sep 17 00:00:00 2001 From: yujamint Date: Mon, 17 Jun 2024 05:00:30 +0900 Subject: [PATCH] Revert "Merge pull request #70 from capstone-five-ai/revert/performance-approve" This reverts commit 6494039e7f1ce881de784ba12aaefc75cc49aea9, reversing changes made to 093ec449adfc9603b431b55aed2632fe8cae808a. --- .../CategorizedProblemRepository.java | 6 +++++- .../service/CategorizedProblemService.java | 2 ++ .../CategorizedSummaryRepository.java | 6 +++++- .../service/CategorizedSummaryService.java | 3 +++ .../app/domain/category/entity/Category.java | 4 ++-- .../java/com/app/domain/file/entity/File.java | 2 +- .../entity/AiGeneratedProblem.java | 3 ++- .../aigeneratedproblem/entity/ProblemFile.java | 2 +- .../entity/AiGeneratedSummary.java | 3 ++- .../aigeneratedsummary/entity/SummaryFile.java | 2 +- .../com/app/global/config/CacheConfig.java | 18 ++++++++++++++++++ 11 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/app/global/config/CacheConfig.java diff --git a/src/main/java/com/app/domain/categorizedproblem/repository/CategorizedProblemRepository.java b/src/main/java/com/app/domain/categorizedproblem/repository/CategorizedProblemRepository.java index 0eff5b1..ec02490 100644 --- a/src/main/java/com/app/domain/categorizedproblem/repository/CategorizedProblemRepository.java +++ b/src/main/java/com/app/domain/categorizedproblem/repository/CategorizedProblemRepository.java @@ -1,18 +1,22 @@ package com.app.domain.categorizedproblem.repository; import com.app.domain.categorizedproblem.entity.CategorizedProblem; +import feign.Param; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; +import org.springframework.data.jpa.repository.Query; public interface CategorizedProblemRepository extends JpaRepository { boolean existsByCategoryCategoryIdAndProblemProblemId(Long categoryId, Long problemId); boolean existsByProblemProblemId(Long problemId); - Page findByCategoryCategoryId(Long categoryId, Pageable pageable); + @Query(value = "SELECT cp FROM CategorizedProblem cp JOIN FETCH cp.problem p JOIN FETCH cp.category c WHERE c.categoryId = :categoryId", + countQuery = "SELECT count(cp) FROM CategorizedProblem cp WHERE cp.category.categoryId = :categoryId") + Page findByCategoryCategoryId(@Param("categoryId") Long categoryId, Pageable pageable); List findByCategoryCategoryId(Long categoryId); } diff --git a/src/main/java/com/app/domain/categorizedproblem/service/CategorizedProblemService.java b/src/main/java/com/app/domain/categorizedproblem/service/CategorizedProblemService.java index 4dca70b..046843f 100644 --- a/src/main/java/com/app/domain/categorizedproblem/service/CategorizedProblemService.java +++ b/src/main/java/com/app/domain/categorizedproblem/service/CategorizedProblemService.java @@ -27,6 +27,7 @@ import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDType0Font; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; @@ -244,6 +245,7 @@ public CategorizedProblem updateCategorizedProblem(Long categorizedProblemId, Me } @Transactional(readOnly = true) + @Cacheable(value = "categorizedProblem", key = "#categoryId") public Page findCategorizedProblemsByCategoryId(Long categoryId, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); return categorizedProblemRepository.findByCategoryCategoryId(categoryId, pageRequest); diff --git a/src/main/java/com/app/domain/categorizedsummary/repository/CategorizedSummaryRepository.java b/src/main/java/com/app/domain/categorizedsummary/repository/CategorizedSummaryRepository.java index eadd6d8..ad59869 100644 --- a/src/main/java/com/app/domain/categorizedsummary/repository/CategorizedSummaryRepository.java +++ b/src/main/java/com/app/domain/categorizedsummary/repository/CategorizedSummaryRepository.java @@ -1,14 +1,18 @@ package com.app.domain.categorizedsummary.repository; import com.app.domain.categorizedsummary.entity.CategorizedSummary; +import feign.Param; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; public interface CategorizedSummaryRepository extends JpaRepository { boolean existsByCategoryCategoryIdAndSummarySummaryId(Long categoryId, Long summaryId); boolean existsBySummarySummaryId(Long summaryId); - Page findByCategoryCategoryId(Long categoryId, Pageable pageable); + @Query(value = "SELECT cs FROM CategorizedSummary cs JOIN FETCH cs.summary s JOIN FETCH cs.category c WHERE c.categoryId = :categoryId", + countQuery = "SELECT count(cs) FROM CategorizedSummary cs WHERE cs.category.categoryId = :categoryId") + Page findByCategoryCategoryId(@Param("categoryId") Long categoryId, Pageable pageable); } diff --git a/src/main/java/com/app/domain/categorizedsummary/service/CategorizedSummaryService.java b/src/main/java/com/app/domain/categorizedsummary/service/CategorizedSummaryService.java index 346a7d0..890f57e 100644 --- a/src/main/java/com/app/domain/categorizedsummary/service/CategorizedSummaryService.java +++ b/src/main/java/com/app/domain/categorizedsummary/service/CategorizedSummaryService.java @@ -17,6 +17,7 @@ import java.io.IOException; import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; @@ -104,6 +105,8 @@ public CategorizedSummary findVerifiedCategorizedSummaryByCategorizedSummaryId(L .orElseThrow(() -> new EntityNotFoundException(ErrorCode.CATEGORIZED_SUMMARY_NOT_EXISTS)); } + @Transactional(readOnly = true) + @Cacheable(value = "categorizedSummary", key = "#categoryId") public Page findCategorziedSummarysByCategoryId(Long categoryId, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); return categorizedSummaryRepository.findByCategoryCategoryId(categoryId, pageRequest); diff --git a/src/main/java/com/app/domain/category/entity/Category.java b/src/main/java/com/app/domain/category/entity/Category.java index 0195bac..72e9ad6 100644 --- a/src/main/java/com/app/domain/category/entity/Category.java +++ b/src/main/java/com/app/domain/category/entity/Category.java @@ -33,10 +33,10 @@ public class Category extends BaseEntity { @Column(nullable = false, length = 10) private CategoryType categoryType; - @OneToMany(mappedBy = "category") + @OneToMany(mappedBy = "category", fetch = FetchType.LAZY) private List categorizedSummaries; - @OneToMany(mappedBy = "category") + @OneToMany(mappedBy = "category", fetch = FetchType.LAZY) private List categorizedProblems; public void updateMember(Member member) { diff --git a/src/main/java/com/app/domain/file/entity/File.java b/src/main/java/com/app/domain/file/entity/File.java index 2734142..618b920 100644 --- a/src/main/java/com/app/domain/file/entity/File.java +++ b/src/main/java/com/app/domain/file/entity/File.java @@ -32,7 +32,7 @@ public abstract class File extends BaseEntity { //@Column(name = "MEMBER_ID") //추후에 Members 엔티티와 연결 //private String memberId; @JsonIgnore - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "MEMBER_ID") private Member member; diff --git a/src/main/java/com/app/domain/problem/aigeneratedproblem/entity/AiGeneratedProblem.java b/src/main/java/com/app/domain/problem/aigeneratedproblem/entity/AiGeneratedProblem.java index 799c280..dbd8c9d 100644 --- a/src/main/java/com/app/domain/problem/aigeneratedproblem/entity/AiGeneratedProblem.java +++ b/src/main/java/com/app/domain/problem/aigeneratedproblem/entity/AiGeneratedProblem.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import lombok.AllArgsConstructor; @@ -20,7 +21,7 @@ public class AiGeneratedProblem extends Problem { @JsonIgnore - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "FILE_ID") private ProblemFile problemFile; diff --git a/src/main/java/com/app/domain/problem/aigeneratedproblem/entity/ProblemFile.java b/src/main/java/com/app/domain/problem/aigeneratedproblem/entity/ProblemFile.java index 4024453..8aa2f66 100644 --- a/src/main/java/com/app/domain/problem/aigeneratedproblem/entity/ProblemFile.java +++ b/src/main/java/com/app/domain/problem/aigeneratedproblem/entity/ProblemFile.java @@ -20,7 +20,7 @@ public class ProblemFile extends File { - @OneToMany(mappedBy = "problemFile", cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany(mappedBy = "problemFile", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) private List aiQuestions; diff --git a/src/main/java/com/app/domain/summary/aigeneratedsummary/entity/AiGeneratedSummary.java b/src/main/java/com/app/domain/summary/aigeneratedsummary/entity/AiGeneratedSummary.java index f9a469d..af3682f 100644 --- a/src/main/java/com/app/domain/summary/aigeneratedsummary/entity/AiGeneratedSummary.java +++ b/src/main/java/com/app/domain/summary/aigeneratedsummary/entity/AiGeneratedSummary.java @@ -4,6 +4,7 @@ import com.app.domain.summary.entity.Summary; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import lombok.AllArgsConstructor; @@ -21,7 +22,7 @@ @Entity public class AiGeneratedSummary extends Summary { - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "FILE_ID") private SummaryFile summaryFile; } diff --git a/src/main/java/com/app/domain/summary/aigeneratedsummary/entity/SummaryFile.java b/src/main/java/com/app/domain/summary/aigeneratedsummary/entity/SummaryFile.java index 3098004..9145e51 100644 --- a/src/main/java/com/app/domain/summary/aigeneratedsummary/entity/SummaryFile.java +++ b/src/main/java/com/app/domain/summary/aigeneratedsummary/entity/SummaryFile.java @@ -21,7 +21,7 @@ @DiscriminatorValue("SUMMARY") public class SummaryFile extends File { - @OneToMany(mappedBy = "summaryFile", cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany(mappedBy = "summaryFile", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) private List aiQuestions; @Column(name = "SUMMARY_AMOUNT", nullable = false) diff --git a/src/main/java/com/app/global/config/CacheConfig.java b/src/main/java/com/app/global/config/CacheConfig.java new file mode 100644 index 0000000..5cb5822 --- /dev/null +++ b/src/main/java/com/app/global/config/CacheConfig.java @@ -0,0 +1,18 @@ +package com.app.global.config; + +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.concurrent.ConcurrentMapCacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableCaching +public class CacheConfig extends CachingConfigurerSupport { + @Bean + @Override + public CacheManager cacheManager() { + return new ConcurrentMapCacheManager("categorizedProblem", "categorizedSummary"); + } +}