[BE] refactor: StageQueryInfo, FestivalQueryInfo 직렬화 시 쿼리에 의존적인 로직 어플리케이션 로직으로 이동 (#1003) #1004
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📌 관련 이슈
✨ PR 세부 내용
이슈 내용대로
FestivalIdStageArtistsQueryDslResolver
에서distinct
와orderBy
절을 제거하고 어플리케이션 로직으로 이동시켜 비즈니스 로직의 응집도를 향상시켰습니다.성능에 큰 영향은 없을 것 같지만, 결과로 쿼리 cost가 9에서 6으로 약 30% 정도 줄었습니다.
다만 어플리케이션에서 distinct를 처리해야 하기에
Artist
에서 equals, hashCode 메서드를 재정의 했습니다.(equals만 재정의하면 되지만, equals를 재정의하면 hashCode 또한 같이 재정의를 해야합니다)
이때
Artist
는 JPA 엔티티이기 때문에 일반적인 방법으로 equals, hashCode 메서드를 재정의하면 예상하지 못한 문제가 발생할 수 있습니다.(프록시 문제)
따라서 엔티티의 경우에는 조금 특별한 방법으로 복잡하게 equals, hashCode를 재정의해야 하는데,
JPA Buddy
플러그인을 사용하면 매우 간단하게 정의할 수 있습니다.자세한 내용은 JPA Buddy 아티클 또는 블로그 참고하시면 좋을 것 같습니다.