inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

QueryDSL 소개

Querydsl 추가 질문입니다

660

전민

작성한 질문수 7

0

//querydsl 추가
buildscript {
    dependencies {
        classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10")
    }
}

plugins {
    id 'org.springframework.boot' version '2.4.1'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

group = 'jpabook'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

//apply plugin: 'io.spring.dependency-management'
apply plugin: "com.ewerk.gradle.plugins.querydsl"

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-devtools'
    implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5'
// implementation 'org.hibernate:hibernate-core:5.4.13.Final'

    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'

    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    //추가
    testImplementation("org.junit.vintage:junit-vintage-engine") {
        exclude group: "org.hamcrest", module: "hamcrest-core"
    }

    //querydsl 추가
    implementation 'com.querydsl:querydsl-jpa'
    //querydsl 추가
    implementation 'com.querydsl:querydsl-apt'
}

tasks.named('test') {
    useJUnitPlatform()
}
//querydsl 추가
//def querydslDir = 'src/main/generated'
def querydslDir = "src/main/generated"

querydsl {
    library = "com.querydsl:querydsl-apt"
    jpa = true
    querydslSourcesDir = querydslDir
}

sourceSets {
    main {
        java {
            srcDirs = ['src/main/java', querydslDir]
        }
    }
}

compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}

configurations {
    querydsl.extendsFrom compileClasspath
}

//Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거
clean {
    delete file('src/main/generated')
}

 

이런식으로 build.gradle을 구성했는데요. 어플리케이션을 실행하려고만 하면

이런 에러가 발생하면서 실행이 되지 않습니다.

java spring spring-boot jpa

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. 쿼리 DSL에 관한 질문이시군요!

제가 보았을 때, 코드에서 querydsl-plugin을 추가하는 부분이 있는 것 같습니다. 이 부분은 Gradle 빌드 스크립트에 추가되는 것으로, 이 플러그인을 사용하면 쿼리 DSL을 더 편리하게 사용할 수 있습니다.

이 플러그인을 사용하기 위해서는 build.gradle 파일에 해당 플러그인의 의존성을 추가해야 합니다. 현재 의존성 코드는 다음과 같습니다.

buildscript {
dependencies {
classpath(“gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10”)
}
}

그리고 plugins 블록에도 해당 플러그인을 추가해야 합니다.

plugins {

id ‘java’
id ‘com.ewerk.gradle.plugins.querydsl’
}

이렇게 추가하고 나면, Gradle 빌드 시에 쿼리 DSL 관련 코드를 자동으로 생성해 줍니다. 이후에는 @QueryProjection이나 Q타입 클래스를 사용하여 쿼리를 작성하고 실행할 수 있게 됩니다.

이 코드 조각이 제가 이해한 내용이며, 추가적인 질문이나 궁금한 점이 있다면 언제든지 알려주세요!

강의 관련 외 질문입니다.

0

67

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

0

91

1

BeanCreationException

0

90

3

Update 후 UpdateMemberResponse 매핑할 때

0

49

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

100

2

페이징 + 검색조건 관련해서 질문드립니다.

0

70

1

Query Dsl Q파일 질문입니다.

0

83

1

루트 쿼리라는것은

0

59

1

메서드를 분리하는 기준

0

63

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

110

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

85

2

fetch join과 영속화와 OSIV의 관계

0

86

2

Distinct 사용 전 결과에 대한 의문

0

113

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

58

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

78

2

dto 필드 속 엔티티 여부

0

60

1

뷰템플릿 사용 시

0

76

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

86

1

DTO 대신 Form 사용은 안되나요?

0

137

1

OSIV ON 상태일 때

0

96

1

fetch join VS fetch join 페이징 궁금증

0

182

2

양방향 연관관계 알아보는 법?

0

105

1

16강 17강 간단 정리 이게 맞을까요 ?

0

165

2