QueryDsl이란

querydsl은 sql, jpql등 Java 코드로 작성할수있게 해주는 프레임워크이다

 

QueryDsl 동작 과정

jqpl 동작과정

jqpl은 개발자가 직접 문자열 형식으로 jqpl을 작성하여 entity manager에게 전달한다.

querydsl 동작과정

querydsl을 사용하게된다면 개발자는 java코드로 querydsl 문법에 맞게 작성한뒤 요청한다. 
그리고 querydsl이 자동으로 jpql을 작성하여 entity manager에게 요청을 보내는 방식이다.

JPQL vs QueryDsl

jpql(문자열) - querydsl(코드)

jpql은 문자열로 동적쿼리를 생성하기 불편하고 타입 안정성이 떨어진다.
그에반해 querydsl은 java 코드로 동작하므로 컴파일시 에러를 체크할수있고 타입 안정성 측면에서 뛰어나다.

QueryDsl 적용

우선 Spring Boot에서 querydsl을 적용하기 위해선 dependency를 추가해주어야한다.

{
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

위 4개의 dependency를 추가해주고 설정파일을 추가한다.

@Configuration
public class QuerydslConfig {

    @PersistenceContext
    private EntityManager entityManager;

    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(entityManager);
    }
}

이렇게 설정하면 querydsl를 사용할 준비가 끝나게된다.

Junyoung.dev