실전! Querydsl - 섹션4. 중급 문법
CS/김영한 스프링 강의

실전! Querydsl - 섹션4. 중급 문법

이제 프로젝션 대상이 여러개인걸 해볼거다. select해서 받는거 여러개.

 

3개 이상부터 자주 쓰인다. 3개 이상부턴 보통 dto로 만들어서 처리하는 듯.

 

jpql로 하면 저렇게 좀 길어지지만 querydsl로 하면 깔끔해진다.

 

근데 이것도 querydsl이 불러오는 방법이 3가지가 있는데, bean, fields, construct다.

bean는 비어있는 생성자 사용, fields는 생성자 없이 그냥 필드 변수 바로 뿌려주고 (private로 되어 있어도 라이브러리가 뚫음), construct는 매개변수 있는 생성자 사용한다.

 

 

 

서브쿼리에서도 가능. 값이 비어있다면 as를 사용하자.

 

 

사실 저렇게 할 필요 없는 궁극의 방법이 있는데, @QueryProjection 어노테이션을 사용하는 것.

이걸 사용하려면 qclass처럼 클래스를 만들어 관리하는 거라 만들고자 하는 클래스 안에 @QueryProjection를 넣은 뒤 다시 querydsl 빌드해야 한다.

 

그럼 qclass처럼 클래스가 생기고 이걸 사용하는 것.

 

엄청 깔끔하다. 근데 저 엔티티 모델이 dto에 의존한다는 문제때문에 그냥 위에서 보여줬던 방법을 추천. 간단하면 이걸 써도 되지만.

 

 

BooleanBuilder를 사용해서 만드는 동적쿼리.

 

 

 

BooleanExpression으로 조립도 가능함

 

벌크연산도 된다. 다만 영속성 컨텍스트에는 남아있으니 없애는걸 잊지말자.

 

 

 

함수도 된다.

다만 자주 쓰이는 소문자로 바꾸기 같은것은 querydsl에서도 지원한다.