Skip to content

Commit d3c9b0e

Browse files
committed
refactor: 코드리뷰 수정사항 반영
- UnivApplyInfo University fetchType LAZY로 변경 - 컨벤션 수정 - findRandomByTerm함수 nativeQuery제거 및 Pageable로 LIMIT 구현
1 parent 2bb6e95 commit d3c9b0e

4 files changed

Lines changed: 19 additions & 12 deletions

File tree

src/main/java/com/example/solidconnection/university/domain/UnivApplyInfo.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ public class UnivApplyInfo {
7777
@Column(length = 1000)
7878
private String details;
7979

80-
@OneToMany(mappedBy = "univApplyInfo", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
80+
@OneToMany(mappedBy = "univApplyInfo", cascade = CascadeType.ALL, orphanRemoval = true)
8181
private Set<LanguageRequirement> languageRequirements = new HashSet<>();
8282

83-
@ManyToOne(fetch = FetchType.EAGER)
83+
@ManyToOne(fetch = FetchType.LAZY)
8484
private University university;
8585

8686
public void addLanguageRequirements(LanguageRequirement languageRequirements) {

src/main/java/com/example/solidconnection/university/repository/UnivApplyInfoRepository.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import com.example.solidconnection.common.exception.CustomException;
44
import com.example.solidconnection.university.domain.UnivApplyInfo;
55
import com.example.solidconnection.university.repository.custom.UnivApplyInfoFilterRepository;
6+
import org.springframework.data.domain.Pageable;
67
import org.springframework.data.jpa.repository.JpaRepository;
78
import org.springframework.data.jpa.repository.Query;
89
import org.springframework.data.repository.query.Param;
910
import org.springframework.stereotype.Repository;
1011

1112
import java.util.List;
12-
import java.util.stream.Collectors;
1313

1414
import static com.example.solidconnection.common.exception.ErrorCode.UNIV_APPLY_INFO_NOT_FOUND;
1515

@@ -37,14 +37,17 @@ OR r.code IN (
3737
""")
3838
List<UnivApplyInfo> findAllBySiteUsersInterestedCountryOrRegionAndTerm(@Param("siteUserId") Long siteUserId, @Param("term") String term);
3939

40-
@Query(value = """
41-
SELECT *
42-
FROM university_info_for_apply
43-
WHERE term = :term
44-
ORDER BY RAND()
45-
LIMIT :limitNum
46-
""", nativeQuery = true)
47-
List<UnivApplyInfo> findRandomByTerm(@Param("term") String term, @Param("limitNum") int limitNum);
40+
@Query("""
41+
SELECT uai
42+
FROM UnivApplyInfo uai
43+
LEFT JOIN FETCH uai.languageRequirements lr
44+
LEFT JOIN FETCH uai.university u
45+
LEFT JOIN FETCH u.country c
46+
LEFT JOIN FETCH u.region r
47+
WHERE uai.term = :term
48+
ORDER BY FUNCTION('RAND')
49+
""")
50+
List<UnivApplyInfo> findRandomByTerm(@Param("term") String term, Pageable pageable); // JPA에서 LIMIT 사용이 불가하므로 Pageable을 통해 0page에서 정해진 개수 만큼 가져오는 방식으로 구현
4851

4952
default UnivApplyInfo getUnivApplyInfoById(Long id) {
5053
return findById(id)

src/main/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import org.springframework.beans.factory.annotation.Value;
88
import org.springframework.boot.context.event.ApplicationReadyEvent;
99
import org.springframework.context.event.EventListener;
10+
import org.springframework.data.domain.PageRequest;
11+
import org.springframework.data.domain.Pageable;
1012
import org.springframework.stereotype.Service;
1113

1214
import java.util.List;
@@ -30,6 +32,7 @@ public class GeneralUnivApplyInfoRecommendService {
3032

3133
@EventListener(ApplicationReadyEvent.class)
3234
public void init() {
33-
generalRecommends = univApplyInfoRepository.findRandomByTerm(term, RECOMMEND_UNIV_APPLY_INFO_NUM);
35+
Pageable page = PageRequest.of(0, RECOMMEND_UNIV_APPLY_INFO_NUM);
36+
generalRecommends = univApplyInfoRepository.findRandomByTerm(term, page);
3437
}
3538
}

src/main/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ private List<UnivApplyInfo> getGeneralRecommendsExcludingSelected(List<UnivApply
5959
int needed = RECOMMEND_UNIV_APPLY_INFO_NUM - alreadyPicked.size();
6060
return generalRecommend.subList(0, Math.min(needed, generalRecommend.size()));
6161
}
62+
6263
/*
6364
* 공통 추천 대학교를 불러온다.
6465
* */

0 commit comments

Comments
 (0)