Open seokjin8678 opened 5 months ago
이슈 내용대로 FestivalIdStageArtistsQueryDslResolver에서 distinct와 orderBy 절을 제거하고 어플리케이션 로직으로 이동시켜 비즈니스 로직의 응집도를 향상시켰습니다.
FestivalIdStageArtistsQueryDslResolver
distinct
orderBy
성능에 큰 영향은 없을 것 같지만, 결과로 쿼리 cost가 9에서 6으로 약 30% 정도 줄었습니다.
다만 어플리케이션에서 distinct를 처리해야 하기에 Artist에서 equals, hashCode 메서드를 재정의 했습니다. (equals만 재정의하면 되지만, equals를 재정의하면 hashCode 또한 같이 재정의를 해야합니다)
Artist
이때 Artist는 JPA 엔티티이기 때문에 일반적인 방법으로 equals, hashCode 메서드를 재정의하면 예상하지 못한 문제가 발생할 수 있습니다. (프록시 문제)
따라서 엔티티의 경우에는 조금 특별한 방법으로 복잡하게 equals, hashCode를 재정의해야 하는데, JPA Buddy 플러그인을 사용하면 매우 간단하게 정의할 수 있습니다.
JPA Buddy
자세한 내용은 JPA Buddy 아티클 또는 블로그 참고하시면 좋을 것 같습니다.
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.
📌 관련 이슈
✨ 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 아티클 또는 블로그 참고하시면 좋을 것 같습니다.