-
Notifications
You must be signed in to change notification settings - Fork 5
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
Conversation
Test Results 31 files 31 suites 8s ⏱️ Results for commit 216a756. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! 수고하셨습니다 리건배
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다 리건! 에러 하루종일 잡고 계시는 것 같던데 힘내세요우..
엎후룹후 드립니다.
@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(); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
서브 쿼리 사용된 부분이군요.
서브 쿼리들은 메타 정보를 이용하지 않기 때문에 DB의 최적화를 받지 못하죠.
흔히들 얘기하는 서브쿼리의 성능 측면의 단점입니다.
그래서 조인이 훨씬 우아한 방법이라고 생각합니다! Join은 웬만한 데이터베이스 벤더에서 모두 최적화를 지원하니까요 👍🏻
다만..! 성능 최적화는 이후에 얘기하는 걸로 하시고 저희 도메인 설계도 바뀌게 될 것 같으니 코멘트만 남겨놓습니다 🙇🏻♂️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사실, update와 join을 어떻게 조합해야할지 감이 잡히지 않아서 서브 쿼리를 활용했습니다.
도메인 변경 이후, QueryDSL 코드를 전반적으로 재검토 해야할 것 같아요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이전에 select 절에 사용된 서브쿼리는 DBA 소환술이라고 소개받은 적이 있습니다.
where절은 어느 정도 참을 수 있는 것 같기는 하지만 개인의 선호라 코멘트 드려보았습니다
* fix: 중복되는 table alias 변경 * fix: 예외 발생 중인 JPQL을 대체하는 QueryDSL 구현 * fix: 여행기 삭제 및 수정 기능 쿼리 수정
✅ 작업 내용