Spring

QUERYDSL 이란

3분 입문자 2022. 12. 20.

- QUERYDSL

 정적 타입을 이용해서 SQL등의 쿼리를 생성해주는 프레임 워크

  동적인 쿼리 작성이 편리하다

  쿼리 작성시 제약 조건 등을 메서드 추출을 통해 재사용할 수 있다.

 

 build.gradle

 implementation "com.querydsl:querydsl-jpa"
 implementation "com.querydsl:querydsl-core"
 implementation "com.querydsl:querydsl-collections"
 annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" 
annotationProcessor "jakarta.annotation:jakarta.annotation-api" 
annotationProcessor "jakarta.persistence:jakarta.persistence-api"


// Querydsl 설정부
def generated = 'src/main/generated'

// querydsl QClass 파일 생성 위치를 지정
tasks.withType(JavaCompile) {
    options.getGeneratedSourceOutputDirectory().set(file(generated))
}

// java source set 에 querydsl QClass 위치 추가
sourceSets {
    main.java.srcDirs += [ generated ]
}

// gradle clean 시에 QClass 디렉토리 삭제
clean {
    delete file(generated)
}

 

설정이 완료 되면 build를 통해 Q클래스가 생성되는지 확인을 한다.

 

JPAQueryFactoryBean 으로 등록하여 프로젝트 전역에서 QueryDSL을 작성할수 있도록 한다.

 

QuerydslConfig.java

import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Configuration
public class QuerydslConfig {
    @PersistenceContext
    private EntityManager entityManager;

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

'Spring' 카테고리의 다른 글

MVC 패턴  (0) 2022.12.28
AOP , DI , IOC  (0) 2022.12.20
WebClient  (0) 2022.12.20
annotation  (0) 2022.12.20
Singleton  (0) 2022.12.20

댓글