Skip to content

Commit bfa7ba7

Browse files
authored
refactor: Community 도메인 제외 연관관계 삭제 (#363)
* refactor: community 도메인 제외 연관관계 삭제 - Application, Country, GpaScore, InterestedCountry/Region, LanguageTestScore, LikedUniversity. SiteUser, UnivApplyInfo 도메인 수정 - 연관관계 삭제 및 생성자 parameter 수정으로 인한 쿼리 수정 다수 - test코드 수정 * fix: application, university 테스트 코드 오류 수정 - 연관관계 변경에 따른 transaction 문제 해결 - 쿼리 일부 수정, 테스트 코드 일부 수정 - GeneralUniversityRecommendService 로직 수정 * refactor: 불필요한 siteUser 재조회 수정 - ScoreService에서 siteUser정보를 다시 불러오는 로직 삭제 * refactor: 수정사항 반영 - 컨벤션, 타입수정 다수 * fix: conflict merge 과정에서 생긴 더미 파일 삭제 * refactor: 불필요한 import문 삭제 * fix: 서브모듈 참조 오류 수정 * refactor: 코드리뷰 수정사항 반영 - Long타입 long으로 수정 - collect -> toList단독으로 변경 - 컨벤션 수정 - Recomment 변경사항 원복 - getGeneralRecommendsExcludingSelected함수 OutOfRange 방지 추가 * refactor: 코드리뷰 수정사항 반영 - UnivApplyInfo University fetchType LAZY로 변경 - 컨벤션 수정 - findRandomByTerm함수 nativeQuery제거 및 Pageable로 LIMIT 구현 * refactor: Parameter 명칭 변경 - siteUser -> siteUserId로 변경 * refactor: Parameter 타입 변경 - Long -> long으로 변경
1 parent 163d0a3 commit bfa7ba7

37 files changed

Lines changed: 167 additions & 211 deletions

src/main/java/com/example/solidconnection/application/domain/Application.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,10 @@
77
import jakarta.persistence.Entity;
88
import jakarta.persistence.EnumType;
99
import jakarta.persistence.Enumerated;
10-
import jakarta.persistence.FetchType;
1110
import jakarta.persistence.GeneratedValue;
1211
import jakarta.persistence.GenerationType;
1312
import jakarta.persistence.Id;
1413
import jakarta.persistence.Index;
15-
import jakarta.persistence.ManyToOne;
1614
import jakarta.persistence.Table;
1715
import lombok.Getter;
1816
import lombok.NoArgsConstructor;
@@ -75,15 +73,15 @@ public class Application {
7573
@Column(name = "third_choice_university_info_for_apply_id")
7674
private Long thirdChoiceUnivApplyInfoId;
7775

78-
@ManyToOne(fetch = FetchType.LAZY)
79-
private SiteUser siteUser;
76+
@Column(name = "site_user_id")
77+
private long siteUserId;
8078

8179
public Application(
8280
SiteUser siteUser,
8381
Gpa gpa,
8482
LanguageTest languageTest,
8583
String term) {
86-
this.siteUser = siteUser;
84+
this.siteUserId = siteUser.getId();
8785
this.gpa = gpa;
8886
this.languageTest = languageTest;
8987
this.term = term;
@@ -101,7 +99,7 @@ public Application(
10199
Long secondChoiceUnivApplyInfoId,
102100
Long thirdChoiceUnivApplyInfoId,
103101
String nicknameForApply) {
104-
this.siteUser = siteUser;
102+
this.siteUserId = siteUser.getId();
105103
this.gpa = gpa;
106104
this.languageTest = languageTest;
107105
this.term = term;
@@ -122,7 +120,7 @@ public Application(
122120
Long secondChoiceUnivApplyInfoId,
123121
Long thirdChoiceUnivApplyInfoId,
124122
String nicknameForApply) {
125-
this.siteUser = siteUser;
123+
this.siteUserId = siteUser.getId();
126124
this.gpa = gpa;
127125
this.languageTest = languageTest;
128126
this.term = term;

src/main/java/com/example/solidconnection/application/dto/ApplicantsResponse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.example.solidconnection.university.domain.UnivApplyInfo;
66

77
import java.util.List;
8+
import java.util.Objects;
89

910
public record ApplicantsResponse(
1011
String koreanName,
@@ -24,6 +25,6 @@ public static ApplicantsResponse of(UnivApplyInfo univApplyInfo, List<Applicatio
2425
}
2526

2627
private static boolean isUsers(Application application, SiteUser siteUser) {
27-
return application.getSiteUser().getId().equals(siteUser.getId());
28+
return Objects.equals(application.getSiteUserId(), siteUser.getId());
2829
}
2930
}

src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.example.solidconnection.application.domain.Application;
44
import com.example.solidconnection.common.VerifyStatus;
55
import com.example.solidconnection.common.exception.CustomException;
6-
import com.example.solidconnection.siteuser.domain.SiteUser;
76
import org.springframework.data.jpa.repository.JpaRepository;
87
import org.springframework.data.jpa.repository.Query;
98
import org.springframework.data.repository.query.Param;
@@ -20,7 +19,6 @@ public interface ApplicationRepository extends JpaRepository<Application, Long>
2019
@Query("""
2120
SELECT a
2221
FROM Application a
23-
JOIN FETCH a.siteUser
2422
WHERE (a.firstChoiceUnivApplyInfoId IN :univApplyInfoIds
2523
OR a.secondChoiceUnivApplyInfoId IN :univApplyInfoIds
2624
OR a.thirdChoiceUnivApplyInfoId IN :univApplyInfoIds)
@@ -33,14 +31,14 @@ public interface ApplicationRepository extends JpaRepository<Application, Long>
3331
@Query("""
3432
SELECT a
3533
FROM Application a
36-
WHERE a.siteUser = :siteUser
34+
WHERE a.siteUserId = :siteUserId
3735
AND a.term = :term
3836
AND a.isDelete = false
3937
""")
40-
Optional<Application> findBySiteUserAndTerm(@Param("siteUser") SiteUser siteUser, @Param("term") String term);
38+
Optional<Application> findBySiteUserIdAndTerm(@Param("siteUserId") long siteUserId, @Param("term") String term);
4139

42-
default Application getApplicationBySiteUserAndTerm(SiteUser siteUser, String term) {
43-
return findBySiteUserAndTerm(siteUser, term)
40+
default Application getApplicationBySiteUserIdAndTerm(long siteUserId, String term) {
41+
return findBySiteUserIdAndTerm(siteUserId, term)
4442
.orElseThrow(() -> new CustomException(APPLICATION_NOT_FOUND));
4543
}
4644
}

src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public ApplicationsResponse getApplicants(SiteUser siteUser, String regionCode,
5656

5757
@Transactional(readOnly = true)
5858
public ApplicationsResponse getApplicantsByUserApplications(SiteUser siteUser) {
59-
Application userLatestApplication = applicationRepository.getApplicationBySiteUserAndTerm(siteUser, term);
59+
Application userLatestApplication = applicationRepository.getApplicationBySiteUserIdAndTerm(siteUser.getId(), term);
6060

6161
List<Long> univApplyInfoIds = Stream.of(
6262
userLatestApplication.getFirstChoiceUnivApplyInfoId(),
@@ -120,7 +120,7 @@ private List<ApplicantsResponse> createUniversityApplicantsResponses(
120120

121121
@Transactional(readOnly = true)
122122
public void validateSiteUserCanViewApplicants(SiteUser siteUser) {
123-
VerifyStatus verifyStatus = applicationRepository.getApplicationBySiteUserAndTerm(siteUser, term).getVerifyStatus();
123+
VerifyStatus verifyStatus = applicationRepository.getApplicationBySiteUserIdAndTerm(siteUser.getId(), term).getVerifyStatus();
124124
if (verifyStatus != VerifyStatus.APPROVED) {
125125
throw new CustomException(APPLICATION_NOT_APPROVED);
126126
}

src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public ApplicationSubmissionResponse apply(SiteUser siteUser, ApplyRequest apply
5050
Long secondChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.secondChoiceUnivApplyInfoId();
5151
Long thirdChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.thirdChoiceUnivApplyInfoId();
5252

53-
Optional<Application> existingApplication = applicationRepository.findBySiteUserAndTerm(siteUser, term);
53+
Optional<Application> existingApplication = applicationRepository.findBySiteUserIdAndTerm(siteUser.getId(), term);
5454
int updateCount = existingApplication
5555
.map(application -> {
5656
validateUpdateLimitNotExceed(application);
@@ -78,7 +78,7 @@ public ApplicationSubmissionResponse apply(SiteUser siteUser, ApplyRequest apply
7878
}
7979

8080
private GpaScore getValidGpaScore(SiteUser siteUser, Long gpaScoreId) {
81-
GpaScore gpaScore = gpaScoreRepository.findGpaScoreBySiteUserAndId(siteUser, gpaScoreId)
81+
GpaScore gpaScore = gpaScoreRepository.findGpaScoreBySiteUserIdAndId(siteUser.getId(), gpaScoreId)
8282
.orElseThrow(() -> new CustomException(GPA_SCORE_NOT_FOUND));
8383
if (gpaScore.getVerifyStatus() != VerifyStatus.APPROVED) {
8484
throw new CustomException(INVALID_GPA_SCORE_STATUS);
@@ -88,7 +88,7 @@ private GpaScore getValidGpaScore(SiteUser siteUser, Long gpaScoreId) {
8888

8989
private LanguageTestScore getValidLanguageTestScore(SiteUser siteUser, Long languageTestScoreId) {
9090
LanguageTestScore languageTestScore = languageTestScoreRepository
91-
.findLanguageTestScoreBySiteUserAndId(siteUser, languageTestScoreId)
91+
.findLanguageTestScoreBySiteUserIdAndId(siteUser.getId(), languageTestScoreId)
9292
.orElseThrow(() -> new CustomException(INVALID_LANGUAGE_TEST_SCORE));
9393
if (languageTestScore.getVerifyStatus() != VerifyStatus.APPROVED) {
9494
throw new CustomException(INVALID_LANGUAGE_TEST_SCORE_STATUS);

src/main/java/com/example/solidconnection/location/country/domain/Country.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.example.solidconnection.location.country.domain;
22

3-
import com.example.solidconnection.location.region.domain.Region;
43
import jakarta.persistence.Column;
54
import jakarta.persistence.Entity;
65
import jakarta.persistence.Id;
7-
import jakarta.persistence.ManyToOne;
86
import lombok.AccessLevel;
97
import lombok.EqualsAndHashCode;
108
import lombok.Getter;
@@ -23,12 +21,12 @@ public class Country {
2321
@Column(nullable = false, length = 100)
2422
private String koreanName;
2523

26-
@ManyToOne
27-
private Region region;
24+
@Column(name="region_code")
25+
private String regionCode;
2826

29-
public Country(String code, String koreanName, Region region) {
27+
public Country(String code, String koreanName, String regionCode) {
3028
this.code = code;
3129
this.koreanName = koreanName;
32-
this.region = region;
30+
this.regionCode = regionCode;
3331
}
3432
}

src/main/java/com/example/solidconnection/location/country/domain/InterestedCountry.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.example.solidconnection.location.country.domain;
22

33
import com.example.solidconnection.siteuser.domain.SiteUser;
4+
import jakarta.persistence.Column;
45
import jakarta.persistence.Entity;
56
import jakarta.persistence.GeneratedValue;
67
import jakarta.persistence.GenerationType;
78
import jakarta.persistence.Id;
8-
import jakarta.persistence.ManyToOne;
99
import jakarta.persistence.Table;
1010
import jakarta.persistence.UniqueConstraint;
1111
import lombok.AccessLevel;
@@ -27,14 +27,14 @@ public class InterestedCountry {
2727
@GeneratedValue(strategy = GenerationType.IDENTITY)
2828
private Long id;
2929

30-
@ManyToOne
31-
private SiteUser siteUser;
30+
@Column(name="site_user_id")
31+
private long siteUserId;
3232

33-
@ManyToOne
34-
private Country country;
33+
@Column(name="country_code")
34+
private String countryCode;
3535

3636
public InterestedCountry(SiteUser siteUser, Country country) {
37-
this.siteUser = siteUser;
38-
this.country = country;
37+
this.siteUserId = siteUser.getId();
38+
this.countryCode = country.getCode();
3939
}
4040
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package com.example.solidconnection.location.country.repository;
22

33
import com.example.solidconnection.location.country.domain.InterestedCountry;
4-
import com.example.solidconnection.siteuser.domain.SiteUser;
54
import org.springframework.data.jpa.repository.JpaRepository;
65

76
import java.util.List;
87

98
public interface InterestedCountryRepository extends JpaRepository<InterestedCountry, Long> {
109

11-
List<InterestedCountry> findAllBySiteUser(SiteUser siteUser);
10+
List<InterestedCountry> findAllBySiteUserId(long siteUserId);
1211
}

src/main/java/com/example/solidconnection/location/region/domain/InterestedRegion.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.example.solidconnection.location.region.domain;
22

33
import com.example.solidconnection.siteuser.domain.SiteUser;
4+
import jakarta.persistence.Column;
45
import jakarta.persistence.Entity;
56
import jakarta.persistence.GeneratedValue;
67
import jakarta.persistence.GenerationType;
78
import jakarta.persistence.Id;
8-
import jakarta.persistence.ManyToOne;
99
import jakarta.persistence.Table;
1010
import jakarta.persistence.UniqueConstraint;
1111
import lombok.AccessLevel;
@@ -27,14 +27,14 @@ public class InterestedRegion {
2727
@GeneratedValue(strategy = GenerationType.IDENTITY)
2828
private Long id;
2929

30-
@ManyToOne
31-
private SiteUser siteUser;
30+
@Column(name="site_user_id")
31+
private long siteUserId;
3232

33-
@ManyToOne
34-
private Region region;
33+
@Column(name="region_code")
34+
private String regionCode;
3535

3636
public InterestedRegion(SiteUser siteUser, Region region) {
37-
this.siteUser = siteUser;
38-
this.region = region;
37+
this.siteUserId = siteUser.getId();
38+
this.regionCode = region.getCode();
3939
}
4040
}

src/main/java/com/example/solidconnection/location/region/repository/InterestedRegionRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88

99
public interface InterestedRegionRepository extends JpaRepository<InterestedRegion, Long> {
1010

11-
List<InterestedRegion> findAllBySiteUser(SiteUser siteUser);
11+
List<InterestedRegion> findAllBySiteUserId(long siteUserId);
1212
}

0 commit comments

Comments
 (0)