
페이지 내의 학교 수만큼 외부 API(schoolClient.getSchool)를 호출하고 있어 N+1 문제가 발생합니다. 페이지 크기가 크면 심각한 성능 저하를 유발할 수 있습니다. 학교 정보를 가져오는 로직을 개선해야 합니다.
예를 들어, schoolRankQueryService에서 학교 정보를 함께 조회하거나, 컨트롤러에서 모든 학교 코드를 수집하여 한 번에 조회하는 bulk API를 SchoolClient에 구현하는 것을 고려해볼 수 있습니다.
또한, 학교 이름을 가져오는 코드를 아래와 같이 Optional.map을 사용하여 더 간결하고 안전하게 개선할 수 있습니다.
.map(schoolRankQueryResult -> {
String schoolName = schoolClient.getSchool(RequestType.JSON.getType(), schoolRankQueryResult.schoolCode())
.map(SchoolInfo::SCHUL_NM)
.orElse("학교 정보 없음"); // 학교 정보가 없을 경우 기본값 설정
return SchoolRankPageResponse.from(schoolRankQueryResult, schoolName);
})
Originally posted by @gemini-code-assist[bot] in #223 (comment)