1. Facts(사실, 객관)
- 쿼리로 데이터 뽑아주기
- FETCH JOIN 사용해서 토이 프로젝트 개선
2. Feelings(느낌, 주관)
- 현업에서 부쩍 쿼리요청이 늘었습니다. 혼자서 쿼리를 짜는 연습을 할때보다, 확실히 현업에 들어온 요청으로 쿼리를 짜주는 실전에서 많이 배웁니다. 요청이 올때마다 join을 통해서 새로운 조건을 추가합니다. 또한 단순히 join 뿐만 아니라 데이터를 보여주는 과정에서도 NVL이나 CASE 문을 활용하여 데이터를 정제했습니다. 여러 건을 합칠 때에는 LISTAGG도 사용했습니다. 이러다보니 JOIN에서 INNER와 OUTER조인을 좀 더 깊이 이해했습니다.
이전에 토이프로젝트를 하면서 얕게 배운 FETCH JOIN이 생각나서 내부 로직을 확인하니 INNER JOIN임을 발견했습니다. 제가 만든 회원정보 조회에서 사진을 불러오기 위해 외부 테이블을 조인하는데, 사진이 없는 경우 INNER JOIN을 하면 데이터가 없기 때문에 오류를 냈습니다. 단순히 FETCH JOIN을 사용하는 것만 중요하게 생각하고 내부 동작원리를 제대로 보지않고 사용했다는 굉장한 부끄러움이 왔습니다. 간단하게 FETCH JOIN을 LEFT JOIN으로 고쳐주었습니다. 기술을 아는 것도 중요하지만 어느 때에 사용해야 하는지도 잘 확인해야 합니다.
3. Findings (배운 점)
- FETCH JOIN은 N + 1 을 극복하기 위해서 JPA에 있는 기능이다. 하지만 이는 내부적으로 INNER JOIN이기 때문에, 주의해서 사용해야 한다.
@Query("select u FROM USER u LEFT JOIN FileUpload f on u.email = f.email")
4. Affirmation (자기 선언)
- 나는 내가 배운 내용을 토이 프로젝트에 적용하면서 공부하는 사람이다.
'회고' 카테고리의 다른 글
TIL_211022 (0) | 2021.10.22 |
---|---|
TIL_211021 (0) | 2021.10.22 |
TIL_211018 (0) | 2021.10.18 |
TIL_211017 (0) | 2021.10.18 |
TIL_211016 (0) | 2021.10.16 |