woowacourse-teams / 2023-festa-go

🎪 페스타고, 대학 축제를 더욱 즐겁게!
71 stars 8 forks source link

[BE] refactor: StageQueryInfo, FestivalQueryInfo 직렬화 시 쿼리에 의존적인 로직 어플리케이션 로직으로 이동 (#1003) #1004

Open seokjin8678 opened 5 months ago

seokjin8678 commented 5 months ago

📌 관련 이슈

✨ PR 세부 내용

이슈 내용대로 FestivalIdStageArtistsQueryDslResolver에서 distinctorderBy 절을 제거하고 어플리케이션 로직으로 이동시켜 비즈니스 로직의 응집도를 향상시켰습니다.

image

성능에 큰 영향은 없을 것 같지만, 결과로 쿼리 cost가 9에서 6으로 약 30% 정도 줄었습니다.

다만 어플리케이션에서 distinct를 처리해야 하기에 Artist에서 equals, hashCode 메서드를 재정의 했습니다. (equals만 재정의하면 되지만, equals를 재정의하면 hashCode 또한 같이 재정의를 해야합니다)

이때 Artist는 JPA 엔티티이기 때문에 일반적인 방법으로 equals, hashCode 메서드를 재정의하면 예상하지 못한 문제가 발생할 수 있습니다. (프록시 문제)

따라서 엔티티의 경우에는 조금 특별한 방법으로 복잡하게 equals, hashCode를 재정의해야 하는데, JPA Buddy 플러그인을 사용하면 매우 간단하게 정의할 수 있습니다.

자세한 내용은 JPA Buddy 아티클 또는 블로그 참고하시면 좋을 것 같습니다.

github-actions[bot] commented 5 months ago

Test Results

245 files  245 suites   28s :stopwatch: 792 tests 792 :white_check_mark: 0 :zzz: 0 :x: 810 runs  810 :white_check_mark: 0 :zzz: 0 :x:

Results for commit 824daf1b.