Notice
Recent Posts
Recent Comments
Link
관리 메뉴

look-forest

QueryDSL : type-safe Query 본문

Spring/Spring 데이터 접근 - 활용 기술

QueryDSL : type-safe Query

studyHub 2024. 8. 31. 16:18

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을 사용해서 동적 쿼리 문제를 해결해보자.

where에 들어갈 builder 부분을 메소드로 모듈화해서 재사용 가능!

 

참고로 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