어제보다 한걸음 더

231002 TIL 코드스쿼드에서 마지막 방학, 채팅 목록 조회 기능, JPA 본문

TIL

231002 TIL 코드스쿼드에서 마지막 방학, 채팅 목록 조회 기능, JPA

지안22 2023. 10. 2. 15:00

부제: Spring Data JPA, QueryDSL, JPQL 간단한 차이

코드스쿼드에서 진행하는 중고거래 프로젝트가 끝나기 전에, 1주일간의 방학 기간이 주어졌다.

이 방학 기간에 SSE를 이용하여 채팅 알림 기능을 구현하고 싶었는데, 알림 기능 이전에 채팅 목록 조회 기능을 만들어야 했다.

 

이번 프로젝트 기간동안 기능 구현 보다는 거의 인프라 위주(github actions를 이용하여 CI/CD 스크립트 작성, AWS EC2에 도커로 프론트, 백, redis, nginx 띄우고 RDS, S3 사용)로 학습했고, 이전 프로젝트까지는 Spring Data JDBC, MyBatis(검색 기능 등 동적 쿼리용)를 사용했기 때문에 이번 프로젝트에서 처음 접하게 된 JPA에 대한 사용법을 잘 모르는 상태였다.

 

JPA는 간단한 쿼리를 작성하는데에는 JDBC보다 쉽게 이용할 수 있었지만, JOIN등이 필요한 복잡한 쿼리 같은 경우에는 QueryDSL이나 JPQL등을 사용하는 것 같았다. 이에 대한 차이가 궁금해졌다.

 

JPQL: 상황에 맞는 쿼리를 직접 지정해서 작성하고 싶을 때 사용. @Query 어노테이션으로 쿼리 작성이 가능하다. (컴파일타임 오류 체크)

QueryDSL: 복잡한 쿼리를 다룰 때 사용. 환경설정이 번거롭다. (런타임 오류 체크)

 

결론적으로 채팅 목록 조회하기 위해서는 복잡한 쿼리(중고거래 상품의 데이터, 메세지 보낸 이의 데이터 등이 필요하기 때문에 여러번의 JOIN 필요, 나에게 온 채팅과 내가 보낸 채팅 모두 조회 필요)를 작성하게 되기 때문에 QueryDSL을 사용하는 것이 좋겠다라는 판단히 들었다.

 

 

- 김영한님 답변

 

Querydsl과 jpql을 선택하는 차이가 궁금합니다. - 인프런 | 질문 & 답변

드디어 querydsl을 배우고있네요!제가 이해하고 있기로는, jpa에서 단순히 PK값으로 find()만 하는것이 아니기 때문에 여러가지 조건으로 검색하는 쿼리를 위해 jpql이 존재하는 것이고, jpql로 해결하

www.inflearn.com

 

- QueryDSL과 JPQL의 차이

 

JPQL vs query DSL

오늘은 JPQL과 query DSL의 차이에 대해 알아보도록 하겠다.JPQL은 JPA의 일부로 Query를 Table이 아닌 객체(=엔티티) 기준으로 작성하는 객체지향 쿼리 언어라고 정의할 수 있겠다.JPQL은 객체를 기준으로

velog.io

- QueryDSL 사용방법

 

[JPA] QueryDSL 기본문법 - 1

내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 1. JPQL vs Querydsl " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스

blogshine.tistory.com

 

'TIL' 카테고리의 다른 글

240226 할 일  (0) 2024.02.26
231029 TIL 한 주 동안 못한 할 일 마무리  (0) 2023.10.29
231016 TIL  (0) 2023.10.16
231006 TIL 중고거래 프로젝트 끝  (0) 2023.10.06
TIL - 2주간 학습 목록 정리 (+미션, 네트워크, 알고리즘)  (0) 2023.06.07