QueryDSL build 설정

달래·2024년 2월 14일
0

JPA

목록 보기
8/9

멀티 모듈 + spring boot 2.x + gradle 9.0

domain 모듈 build.gradle

buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
}

plugins{
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}

dependencies {
    // mysql
    runtimeOnly 'com.mysql:mysql-connector-j'

    // jpa
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

    // querydsl
    implementation  "com.querydsl:querydsl-jpa:${queryDslVersion}"
    implementation  "com.querydsl:querydsl-apt:${queryDslVersion}"

    implementation 'org.springframework:spring-web'
}

def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}

sourceSets {
    main.java.srcDir querydslDir
}

compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    querydsl.extendsFrom compileClasspath
}

bootJar {
    enabled = false
}

jar {
    enabled = true
}

도메인 모듈 QueryDSL Config

package com.mmd.config;

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);
    }
}

이 때 엔티티를 기반으로 QClass를 생성하기 위해선, gradle 빌드를 다시 해주어야 한다.

gradle -> Tasks -> other에서 java compile
컴파일 자체를 다시 해주면 문제 없이 QClass가 생성된다.

profile
아좌잣~!

0개의 댓글