Skip to content

Commit d38763d

Browse files
authored
Merge pull request #118 from swyp-app-team-4/refactor#117-official-place-viewport-remove-n1
[Refactor] 공식 장소 범위 조회 N+1 쿼리 제거
2 parents bee1fba + deb801e commit d38763d

56 files changed

Lines changed: 458 additions & 181 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.gradle

Lines changed: 59 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,100 @@
11
plugins {
2-
id 'java'
3-
id 'org.springframework.boot' version '3.3.8'
4-
id 'io.spring.dependency-management' version '1.1.7'
2+
id 'java'
3+
id 'org.springframework.boot' version '3.3.8'
4+
id 'io.spring.dependency-management' version '1.1.7'
55
}
66

77
group = 'boombimapi'
88
version = '0.0.1-SNAPSHOT'
99

1010
ext {
11-
set('springCloudVersion', "2023.0.1")
11+
set('springCloudVersion', "2023.0.1")
1212
}
1313

1414

1515
java {
16-
toolchain {
17-
languageVersion = JavaLanguageVersion.of(17)
18-
}
16+
toolchain {
17+
languageVersion = JavaLanguageVersion.of(17)
18+
}
1919
}
2020

2121
configurations {
22-
compileOnly {
23-
extendsFrom annotationProcessor
24-
}
22+
compileOnly {
23+
extendsFrom annotationProcessor
24+
}
2525
}
2626

2727
repositories {
28-
mavenCentral()
28+
mavenCentral()
2929
}
3030

3131
dependencyManagement {
32-
imports {
33-
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
34-
}
32+
imports {
33+
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
34+
}
3535
}
3636

3737
dependencies {
38-
// Spring Boot Starters
39-
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
40-
implementation 'org.springframework.boot:spring-boot-starter-security'
41-
implementation 'org.springframework.boot:spring-boot-starter-validation'
42-
implementation 'org.springframework.boot:spring-boot-starter-web'
43-
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
44-
implementation 'org.springframework.boot:spring-boot-starter-webflux'
45-
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
38+
// Spring Boot Starters
39+
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
40+
implementation 'org.springframework.boot:spring-boot-starter-security'
41+
implementation 'org.springframework.boot:spring-boot-starter-validation'
42+
implementation 'org.springframework.boot:spring-boot-starter-web'
43+
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
44+
implementation 'org.springframework.boot:spring-boot-starter-webflux'
45+
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
4646

47-
// Spring Cloud
48-
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
47+
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
4948

50-
// JWT
51-
implementation 'io.jsonwebtoken:jjwt-api:0.12.5'
52-
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.5'
53-
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.5'
49+
// Spring Cloud
50+
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
5451

55-
// Jackson (JSON 처리)
56-
implementation 'com.fasterxml.jackson.core:jackson-databind'
52+
// JWT
53+
implementation 'io.jsonwebtoken:jjwt-api:0.12.5'
54+
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.5'
55+
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.5'
5756

58-
// API Documentation
59-
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
57+
// Jackson (JSON 처리)
58+
implementation 'com.fasterxml.jackson.core:jackson-databind'
6059

61-
// Web Scraping (필요한 경우만 유지)
62-
implementation 'org.jsoup:jsoup:1.16.1'
63-
implementation 'org.seleniumhq.selenium:selenium-java:4.20.0'
60+
// API Documentation
61+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
6462

65-
// Database
66-
runtimeOnly 'com.mysql:mysql-connector-j'
67-
runtimeOnly 'org.postgresql:postgresql'
63+
// Web Scraping (필요한 경우만 유지)
64+
implementation 'org.jsoup:jsoup:1.16.1'
65+
implementation 'org.seleniumhq.selenium:selenium-java:4.20.0'
6866

69-
// Lombok
70-
compileOnly 'org.projectlombok:lombok'
71-
annotationProcessor 'org.projectlombok:lombok'
67+
// Database
68+
runtimeOnly 'com.mysql:mysql-connector-j'
69+
runtimeOnly 'org.postgresql:postgresql'
7270

73-
//alarm
74-
implementation "org.springframework.boot:spring-boot-starter-amqp"
75-
implementation "com.fasterxml.jackson.core:jackson-databind"
76-
implementation 'com.google.firebase:firebase-admin:9.5.0'
77-
implementation 'org.springframework.boot:spring-boot-starter-batch'
71+
// Lombok
72+
compileOnly 'org.projectlombok:lombok'
73+
annotationProcessor 'org.projectlombok:lombok'
7874

79-
//s3
80-
implementation 'software.amazon.awssdk:s3:2.20.56'
75+
//alarm
76+
implementation "org.springframework.boot:spring-boot-starter-amqp"
77+
implementation "com.fasterxml.jackson.core:jackson-databind"
78+
implementation 'com.google.firebase:firebase-admin:9.5.0'
79+
implementation 'org.springframework.boot:spring-boot-starter-batch'
8180

82-
// Prometheus + Grafana 모니터링
83-
implementation 'org.springframework.boot:spring-boot-starter-actuator'
84-
implementation 'io.micrometer:micrometer-registry-prometheus'
81+
//s3
82+
implementation 'software.amazon.awssdk:s3:2.20.56'
8583

84+
// Prometheus + Grafana 모니터링
85+
implementation 'org.springframework.boot:spring-boot-starter-actuator'
86+
implementation 'io.micrometer:micrometer-registry-prometheus'
8687

87-
// Test
88-
testImplementation 'org.springframework.boot:spring-boot-starter-test'
89-
testImplementation 'org.springframework.security:spring-security-test'
90-
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
9188

89+
// Test
90+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
91+
testImplementation 'org.springframework.security:spring-security-test'
92+
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
9293

93-
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
94+
95+
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
9496
}
9597

9698
tasks.named('test') {
97-
useJUnitPlatform()
99+
useJUnitPlatform()
98100
}

src/main/java/boombimapi/domain/congestion/application/MemberCongestionService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import boombimapi.domain.congestion.repository.MemberCongestionRepository;
1111
import boombimapi.domain.member.domain.entity.Member;
1212
import boombimapi.domain.member.domain.repository.MemberRepository;
13-
import boombimapi.domain.place.entity.MemberPlace;
14-
import boombimapi.domain.place.repository.MemberPlaceRepository;
13+
import boombimapi.domain.place.command.entity.MemberPlace;
14+
import boombimapi.domain.place.command.repository.MemberPlaceRepository;
1515
import boombimapi.global.infra.exception.error.BoombimException;
1616
import lombok.RequiredArgsConstructor;
1717
import org.springframework.stereotype.Service;

src/main/java/boombimapi/domain/congestion/entity/MemberCongestion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package boombimapi.domain.congestion.entity;
22

33
import boombimapi.domain.member.domain.entity.Member;
4-
import boombimapi.domain.place.entity.MemberPlace;
4+
import boombimapi.domain.place.command.entity.MemberPlace;
55
import boombimapi.global.base.BaseExpiringEntity;
66
import jakarta.persistence.Column;
77
import jakarta.persistence.Entity;

src/main/java/boombimapi/domain/congestion/entity/OfficialCongestion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package boombimapi.domain.congestion.entity;
22

3-
import boombimapi.domain.place.entity.OfficialPlace;
3+
import boombimapi.domain.place.command.entity.OfficialPlace;
44
import jakarta.persistence.Column;
55
import jakarta.persistence.Entity;
66
import jakarta.persistence.FetchType;

src/main/java/boombimapi/domain/congestion/entity/OfficialCongestionForecast.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package boombimapi.domain.congestion.entity;
22

3-
import boombimapi.domain.place.entity.OfficialPlace;
3+
import boombimapi.domain.place.command.entity.OfficialPlace;
44
import jakarta.persistence.Column;
55
import jakarta.persistence.Entity;
66
import jakarta.persistence.FetchType;

src/main/java/boombimapi/domain/congestion/repository/MemberCongestionRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package boombimapi.domain.congestion.repository;
22

33
import boombimapi.domain.congestion.entity.MemberCongestion;
4-
import boombimapi.domain.place.entity.MemberPlace;
4+
import boombimapi.domain.place.command.entity.MemberPlace;
55
import java.time.LocalDateTime;
66
import java.util.List;
77
import java.util.Optional;

src/main/java/boombimapi/domain/congestion/repository/OfficialCongestionForecastRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package boombimapi.domain.congestion.repository;
22

33
import boombimapi.domain.congestion.entity.OfficialCongestionForecast;
4-
import boombimapi.domain.place.entity.OfficialPlace;
4+
import boombimapi.domain.place.command.entity.OfficialPlace;
55
import java.time.LocalDateTime;
66
import java.util.List;
77
import org.springframework.data.jpa.repository.JpaRepository;

src/main/java/boombimapi/domain/favorite/api/FavoriteController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import boombimapi.domain.favorite.dto.request.AddFavoriteRequest;
77
import boombimapi.domain.favorite.dto.response.AddFavoriteResponse;
88
import boombimapi.domain.favorite.dto.response.FavoriteResponse;
9-
import boombimapi.domain.place.entity.PlaceType;
9+
import boombimapi.domain.place.shared.type.PlaceType;
1010
import boombimapi.global.response.BaseResponse;
1111
import io.swagger.v3.oas.annotations.Operation;
1212
import io.swagger.v3.oas.annotations.responses.ApiResponse;

src/main/java/boombimapi/domain/favorite/application/FavoriteService.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package boombimapi.domain.favorite.application;
22

3-
import static boombimapi.domain.place.entity.PlaceType.*;
3+
import static boombimapi.domain.place.shared.type.PlaceType.MEMBER_PLACE;
4+
import static boombimapi.domain.place.shared.type.PlaceType.OFFICIAL_PLACE;
45
import static boombimapi.global.infra.exception.error.ErrorCode.*;
56

67
import boombimapi.domain.congestion.entity.MemberCongestion;
@@ -14,21 +15,20 @@
1415
import boombimapi.domain.favorite.dto.response.MemberPlaceFavoriteResponse;
1516
import boombimapi.domain.favorite.dto.response.OfficialPlaceFavoriteResponse;
1617
import boombimapi.domain.favorite.entity.Favorite;
17-
import boombimapi.domain.place.entity.OfficialPlace;
18-
import boombimapi.domain.place.entity.PlaceType;
18+
import boombimapi.domain.place.command.entity.OfficialPlace;
19+
import boombimapi.domain.place.shared.type.PlaceType;
1920
import boombimapi.domain.favorite.repository.FavoriteRepository;
2021
import boombimapi.domain.member.domain.entity.Member;
2122
import boombimapi.domain.member.domain.repository.MemberRepository;
22-
import boombimapi.domain.place.entity.MemberPlace;
23-
import boombimapi.domain.place.repository.MemberPlaceRepository;
24-
import boombimapi.domain.place.repository.OfficialPlaceRepository;
23+
import boombimapi.domain.place.command.entity.MemberPlace;
24+
import boombimapi.domain.place.command.repository.MemberPlaceRepository;
25+
import boombimapi.domain.place.command.repository.OfficialPlaceRepository;
2526
import boombimapi.global.infra.exception.error.BoombimException;
2627
import java.time.LocalDate;
2728
import java.time.LocalDateTime;
2829
import java.util.ArrayList;
2930
import java.util.List;
3031
import java.util.Map;
31-
import java.util.Optional;
3232
import lombok.RequiredArgsConstructor;
3333
import org.springframework.stereotype.Service;
3434
import org.springframework.transaction.annotation.Transactional;

src/main/java/boombimapi/domain/favorite/application/validator/MemberPlaceValidator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package boombimapi.domain.favorite.application.validator;
22

3-
import boombimapi.domain.place.entity.PlaceType;
4-
import boombimapi.domain.place.repository.MemberPlaceRepository;
3+
import boombimapi.domain.place.shared.type.PlaceType;
4+
import boombimapi.domain.place.command.repository.MemberPlaceRepository;
55
import boombimapi.global.infra.exception.error.BoombimException;
66
import boombimapi.global.infra.exception.error.ErrorCode;
77
import lombok.RequiredArgsConstructor;

0 commit comments

Comments
 (0)