팀 프로젝트 시 Query DSL을 사용했었는데,
생각 했던것과 달리 gradle 설정이 많이 어려웠던게 기억이 납니다.
특히, Java11 버전의 Query DSL 설정과 차이가나 여러 글들을 참고했음에도 (무엇이 문제인지 잘 몰랐기 때문에..)
많은 에러를 만났었는데요.. ㅠㅠ
그래서 !
이번 글에서는 Java17 과 SpringBoot 3.1.2 에서의 Query DSL 설정을 공유하려 합니다.
gradle
dependencies | |
implementation 'com.querydsl:querydsl-jpa:최신 버전' | JPA 엔터티에 대한 Querydsl 쿼리를 작성하고 실행하게함. |
annotationProcessor "com.querydsl:querydsl-apt:최신 버전" | JPA 엔터티 클래스에 Querydsl 어노테이션을 사용하고, 컴파일 시 코드를 생성하도록 함 |
annotationProcessor "jakarta.annotation:jakarta.annotation-api" | Jakarta EE 스펙을 구현하고 Jakarta EE 애플리케이션에서 어노테이션을 사용할 수 있도록 제공 |
annotationProcessor "jakarta.persistence:jakarta.persistence-api" | Jakarta Persistence API (JPA)를 지원. |
++ springBoot 3.0 이상 부터는 p6spy 1.9.0 을 사용! | |
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' | 쿼리의 로그를 남겨주는 p6spy 설정 |
gradle 코드
더보기
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.1.2'
//플러그인 없음. -> 구 버전에서는 플러그인을 추가 했었음.
}
dependencies {
// JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
//querydsl
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"
implementation "com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0"
// 생략
}
QueryDslConfig
Config 코드
더보기
import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@EnableJpaAuditing
@Configuration
public class QueryDslConfig {
@PersistenceContext
private EntityManager em;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(this.em);
}
}
여기까지 설정 후, 프로젝트를 실행해봅니다.
만약 잘 설정되었다면 build → generated 폴더안 Q 클래스가 생성되어 있을 것 입니다.
이 Q 클래스는 사용자가 직접 지정한 entity에 대해서만 Q클래스를 생성하게 됩니다.
사용자가 직접 지정한 entity ?
감사합니다!
'Database' 카테고리의 다른 글
[ IntelliJ ] 환경 변수에 DB정보를 추가하고 Spring Boot에서 사용하기 (0) | 2023.06.08 |
---|---|
[ JDBC ] Insert , select 하기 (1) | 2023.05.26 |
[ IntelliJ ] DB 연결하기 / 환경 변수에 DB 정보 추가하기 ( MySQL ) (0) | 2023.05.26 |
[h2] spring boot 에서 h2 설정 및 사용 ( + @entity ) (0) | 2023.04.04 |
[h2] 접속 1 ( cmd , console 접속 ) (0) | 2023.04.04 |