[TIL]20220915

god1hyuk·2022년 9월 15일
1

TIL / WIL

목록 보기
25/30

오늘은 특별할 것 없이 무난한 하루였다.

디자이너분과의 미팅이 있는 날이라 오전, 각자 점심 먹고 오후까지 회의를 진행했다.

워낙 일정에 뒤 처진 상태라 개발 일정에 관한 우선순위를 다시 정의하고 정리가 조금 필요한 부분들을 찾아 논의 후 확정을 지었고 다시 각자의 자리로 돌아가 맡은 작업을 진행했다.

나는 여전히 n월의 리포트 조회 기능 구현 중이다. 8개의 리포트를 조회해야 하는데 생각보다 시간이 많이 소요 된다. SQL로 쿼리를 했을 때는 내 기준 깔끔하게 잘 처리 해서 값을 얻어 냈다 생각했는데 QueryDSL에 적용하는 과정에서는 또 쉽지 않았다. SQL에서 제공되던 것들이 QueryDSL에서는 지원이 되지 않는 컨텍스트들도 있었다.

예를 들면 RANK() 함수, FROM 절에서의 sub query 등이 지원되지 않는다. 구글에서 구석구석 뒤져가며 QueryDSL에서 지원되지 않는다는 사실을 알게 된 것이다. 사실 지원이 되지 않는다는 사실을 안 것 뿐이지 만약 지원되지 않는다면 어떻게 해결하고 적용해야 하는지는 해답을 딱히 얻지 못했다.

QueryDSL에서는 FROM 절에서의 sub query가 지원되지 않는다.

이 부분에 대해서 조사한 바로는 저러한 특성 때문에 FROM 절에서의 sub query를 JOIN으로 분리 하거나, 따로 쿼리하여 각각 값을 얻어내야 한다는 내용들이 있었다. 사실 큰 도움은 되지 않았다.

나는 앞서 말한 RANK() 함수를 함께 사용해야 하는 상황이었기에 너무 까다로운 조건에 놓여 있었다.

결국에는 해결책을 찾아냈다기보다 QueryDSL이 아닌 native query를 사용하여 처리하는 방식을 택했다. 그래서 만족스럽지는 않지만 필요한 데이터를 얻어 내는 것에 성공했다.

이는 트러블을 슈팅한 것이 아니라 우회한 것이기에 따로 포스트를 작성하지는 않았다.

내가 부족하고 모르는 부분이 많아서인지는 모르겠지만 JPA, QueryDSl의 한계가 느껴졌다. 그렇다고 JPQL이나 native query를 사용하게 되면 뭔가 만족스럽지 못한 코드로 작성된다.

아무튼 값은 조회 되는 것을 확인 했으니 커밋, 푸시, 머지 하고 이후에 더 나은 방법을 찾아 개선하려 한다.

지금 새벽 2시, 늦은 시간이긴 하지만 간만에 일찍 마무리 하는 듯 하다. 맥주 딱 한캔만 더 하고 자야겠다.

0개의 댓글