자바/JPA

Querydsl 기능 (1)

류창 2022. 7. 27. 00:23
반응형

 

 

 

 

Querydsl의 정렬기능

 

쿼리dsl 에서 정렬은   orderBy()로 정렬할수있다.

 

정렬의 조건은 여러개 설정할수있고,  첫 파라미터가 먼저 적용이된다.

 

사진은 1. 나이순으로 역순   2. 나이이름으로 오름차순이다.

 

 

 

쿼리 dsl 의 페이징기능이다.

 

offset()은  페이지를 읽을 첫 시작점을,  limit()는 몇개의 페이지를 읽을지 제한을 거는것이다.

 

 

 

쿼리 dsl에는    sum , avg , max, min, count 와같은 집합기능을 쓸수있다.

 

 select에 타입이 다양한 값이 들어오면,  자동으로  튜플형태로 리스트를 반환한다.

 

이럴땐 튜플을 꺼내와서  값이 정확한지 확인을 해봐야한다.

 

 

 

 

그룹핑을 할때,  일반 SQL문과같이 gruopBy를 사용한다.

 

 

이 쿼리는  잘보면 최적화가 되어있지않다.

 

member -> team 으로 다대일 조인을하게되면  N+1문제가 발생한다.

 

이대로 돌려도 문제없인 잘나오지만 쿼리가 여러번나가기때문에,  하나로 줄이고싶으면 .fetchjoin()을 사용하자.

 

 

 

네이티브 SQL과 같이  join에 on절을사용해 필터링이 가능하다.

 

 

join_ on vs  where 

 

join_on 은   조인하기 전에 미리 조건의 부합하는걸 필터링으로 걸러낸다.

 

반면에 where조건은   우선 조인을먼저한뒤,  조건의 부합하는걸 걸러낸다.

 

따라서 둘의 결과값은 같지만 동작하는 방식은 다르다.

반응형

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

JPA Entity 정적 팩토리 메소드에 관하여  (1) 2022.09.19
Querydsl 기능 (2)  (0) 2022.07.27
스프링 JPA Querydsl 소개  (0) 2022.07.25
JPA 값타입  (0) 2022.06.27
JPA : 상속관계 매핑  (0) 2022.06.15