Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fix] - JPQL 관련 alias ambiguous 예외 발생 #352

Merged
merged 4 commits into from
Aug 20, 2024

Conversation

hangillee
Copy link

✅ 작업 내용

  • 여행기 삭제 및 수정 기능 쿼리를 QueryDSL로 작성
  • DB Table alias ambiguous 문제 해결

@hangillee hangillee added the BE label Aug 20, 2024
@hangillee hangillee added this to the sprint 4 milestone Aug 20, 2024
@hangillee hangillee self-assigned this Aug 20, 2024
Copy link

Test Results

 31 files   31 suites   8s ⏱️
252 tests 252 ✅ 0 💤 0 ❌
267 runs  267 ✅ 0 💤 0 ❌

Results for commit 216a756.

Copy link

@slimsha2dy slimsha2dy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 수고하셨습니다 리건배

Copy link

@Libienz Libienz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 리건! 에러 하루종일 잡고 계시는 것 같던데 힘내세요우..
엎후룹후 드립니다.

Comment on lines +20 to +30
@Override
public void deleteAllByTravelogue(Travelogue travelogue) {
jpaQueryFactory.update(traveloguePhoto)
.set(traveloguePhoto.deletedAt, LocalDateTime.now())
.where(traveloguePhoto.traveloguePlace.travelogueDay.eq(
JPAExpressions.selectFrom(travelogueDay)
.leftJoin(QTravelogue.travelogue)
.on(QTravelogue.travelogue.eq(travelogue))
))
.execute();
}
Copy link

@Libienz Libienz Aug 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

서브 쿼리 사용된 부분이군요.
서브 쿼리들은 메타 정보를 이용하지 않기 때문에 DB의 최적화를 받지 못하죠.
흔히들 얘기하는 서브쿼리의 성능 측면의 단점입니다.

그래서 조인이 훨씬 우아한 방법이라고 생각합니다! Join은 웬만한 데이터베이스 벤더에서 모두 최적화를 지원하니까요 👍🏻
다만..! 성능 최적화는 이후에 얘기하는 걸로 하시고 저희 도메인 설계도 바뀌게 될 것 같으니 코멘트만 남겨놓습니다 🙇🏻‍♂️

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사실, update와 join을 어떻게 조합해야할지 감이 잡히지 않아서 서브 쿼리를 활용했습니다.
도메인 변경 이후, QueryDSL 코드를 전반적으로 재검토 해야할 것 같아요.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이전에 select 절에 사용된 서브쿼리는 DBA 소환술이라고 소개받은 적이 있습니다.
where절은 어느 정도 참을 수 있는 것 같기는 하지만 개인의 선호라 코멘트 드려보았습니다

@hangillee hangillee merged commit c334f38 into develop/be Aug 20, 2024
3 checks passed
@hangillee hangillee deleted the hotfix/be/#351 branch August 20, 2024 05:09
hangillee added a commit to hangillee/2024-touroot that referenced this pull request Aug 20, 2024
* fix: 중복되는 table alias 변경

* fix: 예외 발생 중인 JPQL을 대체하는 QueryDSL 구현

* fix: 여행기 삭제 및 수정 기능 쿼리 수정
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants