자바/JPA

스프링 JPA Querydsl 소개

류창 2022. 7. 25. 23:42
반응형

 

 

 

JPA의 데이터를 넣을때  쿼리문 , 즉 SQL문은 필수적인 요소다.

 

 

간단한 데이터 CRUD는 SQL문을 만들 필요가없지만, 다양한 조건과 테이블 병합, 최적화를 하려면

 

JPQL 과 Querydsl이 필요하다.

 

 

JPQL vs Querydsl

 

 

전자에 써잇는  queryFactory(JPAQueryFactory)를 이용한 쿼리문이 Querydsl

 

후자에 써잇는  EntityManager를 이용한 createQuery가  JPQL이다.

 

 

둘 다  Member테이블에서  이름이 member1 이며, 나이 10을 뽑는 동일한 쿼리다.

 

 

 

 

둘 중에 추천하는것은 역시 Querydsl 이다.

 

 

Querydsl의 눈에 띄는 장점은 역시

 

1.높은 생산성과 낮은 난이도이다.

 

JPQL은 쿼리스트링을 작성할때,  한문자 한문자 일일이 다쳐야한다. 

 복잡한 쿼리문을 작성할때 많이 피곤해질수있는것을

 

Querydsl은  관련된 테이블, 메소드, 엔티티 문자만 쳐도 알아서 자동완성창을 다 띄어준다.  

 

 

2. 컴파일 할때부터 오류를 잡아준다.

 

QueryDsl은 문법상 오류가날때 컴파일하는 과정중에 오류를 뱉는다.

 

따라서 실행하고나서 쿼리오류를 사전에 방지하는 효과가있다.

 

 

 

Querydsl 설치

 

아래 Querydsl 주석에서 4줄까지가 쿼리dsl 부분이다.

 

 

 

 

 

Querydsl의 특징 : Q타입

 

 

 

엔티티를 만들고 한번 실행(컴파일)을 시켜주면,

 

스프링에서 알아서  generated폴더에  Q타입을 만들어준다.

 

이 Q타입 클래스들은  쿼리문을 작성할때  기본 entity대신에 사용하라고 만들어 둔것이다.

 

 

Querydsl를 사용하기위해선

 

JPAQueryFactory를 하나생성한뒤,  EntityManager를 넣어주면서 사용해야한다.

반응형

'자바 > JPA' 카테고리의 다른 글

Querydsl 기능 (2)  (0) 2022.07.27
Querydsl 기능 (1)  (0) 2022.07.27
JPA 값타입  (0) 2022.06.27
JPA : 상속관계 매핑  (0) 2022.06.15
JPA: 연관관계 매핑 (1:1 , 1:N, N:1, N:M)  (0) 2022.06.14