Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 지연 로딩
- @Transactional
- Spring Data JPA
- dockerhub
- Spring
- Routing Key
- MSA
- 쿠버네티스
- JPQL
- AWS
- Web
- securitycontextholderfilter
- redis
- DI
- docker compose
- 서블릿 컨테이너
- @ComponentScan
- CORS
- JWT
- Dead Letter Queue
- 페이징
- Spring Container
- JdbcTemplate
- 컨테이너
- mybatis
- 스프링 부트
- DLQ
- docker
- JPA
- kafka
Archives
- Today
- Total
look-forest
QueryDSL : type-safe Query 본문
QUERY의 문제점 : QUERY는문자,Type-check불가능. 실행하기 전까지 작동 여부 확인 불가
만약SQL이 클래스처럼 타입이 있고 자바코드로 작성할 수 있다면?
QueryDSL
- JPA, MongoDB, SQL같은 기술들을 위해 쿼리를 Java로 type-safe하게 개발할 수 있게 지원하는 프레임워크
- 주로 JPA쿼리(JPQL)에 사용. JPQL builder 역할.
- 쿼리+도메인+특화+언어
- 쿼리에 특화된 프로그래밍 언어
- 컴파일 에러, IDE 자동완성 지원!
- JPQL로 해결하기 어려운 복잡한 쿼리는 네이티브 SQL 쿼리 사용 (QueryDSL -> JPQL -> SQL)
DSL
도메인+특화+언어
특정한 도메인에 초점을 맞춘 제한적인 표현력을 가진 컴퓨터 프로그래밍 언어
Querydsl 활용
Spring Data 프로젝트의 약점은 조회
Querydsl로 복잡한 조회 기능 보완 (복잡한 쿼리, 동적 쿼리)
- 단순한 경우 : Spring Data JPA
- 복잡한 경우 : Querydsl 직접 사용
Querydsl 적용
Querydsl을 사용하려면 JPAQueryFactory 가 필요하다. JPAQueryFactory 는 JPA 쿼리인 JPQL을 만들기 때문에 EntityManager 가 필요하다.

기본 기능들은 JPA가 제공하는 기본 기능을 사용하고, Querydsl을 사용해서 동적 쿼리 문제를 해결해보자.

참고로 Querydsl 은 별도의 스프링 예외 추상화를 지원하지 않는다. 대신에 JPA에서 학습한 것처럼 @Repository 에서 스프링 예외 추상화를 처리해준다.
참고 자료 & 이미지 출처
스프링 DB 2편 - 데이터 접근 기술 (김영한 님)
'Spring > Spring 데이터 접근 - 활용 기술' 카테고리의 다른 글
| 스프링 트랜잭션 이해 (0) | 2024.09.02 |
|---|---|
| 데이터 접근 기술 - 활용 방안 (2) | 2024.09.02 |
| 스프링 데이터 JPA (0) | 2024.08.18 |
| JPA (0) | 2024.08.17 |
| MyBatis (0) | 2024.08.17 |