본문 바로가기
IT/Java

[QueryDSL] 사용법

by 성준하이 2024. 6. 12.
반응형

Spring 에서 QueryDSL 을 사용하기 위해서는 아래와 같은 절차를 따르면 쉽게 사용이 가능하다.

 

먼저 사용을 위해 maven 등록을 해준다.

https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa

https://mvnrepository.com/artifact/com.querydsl/querydsl-apt

 

이 두개의 repository를 넣으면 된다.

<dependency>
     <groupId>com.querydsl</groupId>
     <artifactId>querydsl-jpa</artifactId>
     <version>5.0.0</version>
     <classifier>jakarta</classifier>
</dependency>
<dependency>
     <groupId>com.querydsl</groupId>
     <artifactId>querydsl-apt</artifactId>
     <version>5.0.0</version>
     <classifier>jakarta</classifier>
</dependency>

jakarta 이슈로 인해 classifier 를 추가하였다.(자세한 내용은 참고 포스팅 참고)

 

그리고 Entity를 하나 만들어준다.(QueryDsl을 사용하기 위해서는 Entity를 QClass로 만들어야함.)

 

다음에 maven compile을 한번 진행해준다.

그래야 QClass 파일이 생긴다.

 

성공적으로 maven 작업을 했다면 만들어진 QClass 를 아래와 같이 사용하면된다.

public class QuerydslService {

@PersistenceContext
EntityManager em;

public List<QueryTestTable> testQuerydsl(String id) {

     JPAQueryFactory queryFactory = new JPAQueryFactory(em);

     QQueryTestTable qTestTable = QQueryTestTable.queryTestTable;

     List<QueryTestTable> list = queryFactory.select(
         Projections.fields(QueryTestTable.class,
             qTestTable.id,
             qTestTable.nameValue,
             qTestTable.gender,
             qTestTable.birth,
             qTestTable.fctr1,
             qTestTable.aNo)
         ).from(qTestTable)
         .where(qTestTable.id.eq(id))
         .orderBy(qTestTable.nameValue.asc())
         .fetch();

         return list;
}

}

 

만약 QClass가 정상적으로 import 되지 않는다면 아래 참고포스팅을 참고하여 해결할수 있다.

 


참고 포스팅

https://thenicesj.tistory.com/958

 

[Error] Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity maven

Querydsl을 셋팅하면서 아래와 같은 에러를 마주쳤다. Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity maven 이전 포스팅에서 jakarta 에 대해서 다룬 글이 있다.자세한 내용은 참고 포스팅 참

thenicesj.tistory.com

https://thenicesj.tistory.com/959

 

[QueryDSL] Q Class import 안될 때

querydsl 을 사용하기 위해서는 Q Class 를 사용하게 되는데 이때 QClass 를 import 가 안되는 상황이 발생할 수 있다. 대부분 프로젝트에 처음 QClass를 import 할때 생긴다. 이유는 QClass 가 존재하는 디렉

thenicesj.tistory.com

 

 

반응형

댓글