일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 회고
- Til
- 22년도
- 코드스쿼드
- baeldung
- 2023
- 3주차 회고
- JazzMeet
- 실패했지만성공했다
- rotuter
- MAX
- Python
- new File().toPath()
- Map.of()
- 오류
- 자유 프로젝트
- BOJ
- 파이썬
- MapSqlParameterSource
- 누구나 자료구조와 알고리즘
- requested
- Spring
- NamedParameterJdbcTemplate
- 채팅목록조회
- 백준
- 231103
- 테이크스트라
- 재즈밋
- Paths.get()
- 코드스쿼드max
- Today
- Total
어제보다 한걸음 더
231002 TIL 코드스쿼드에서 마지막 방학, 채팅 목록 조회 기능, JPA 본문
부제: 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 |