개발 무지렁이

[Spring Boot] QueryDSL, Q클래스 본문

Backend/스프링부트

[Spring Boot] QueryDSL, Q클래스

Gaejirang-e 2022. 12. 4. 08:12

QueryDSL


Java로 SQL처럼 구현할 수 있는 것을 말한다.
⭐. Entity클래스로부터 파생된 Q클래스가 필요하다.

ex. Member클래스로부터 QMember클래스가 만들어져야 한다.
(Intellij, Gradle -> Tasks -> other -> compileQuerydsl, Entity클래스를 수정할 때마다)

build.gradle 🐘

buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
}

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

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

    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
    implementation "com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0"
}

def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}

sourceSets {
    main.java.srcDir querydslDir
}

configurations {
    querydsl.extendsFrom compileClasspath
}

compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}

UserRepository의 상속관계

public interface UserRepository extends JpaRepsitory extends PagingAndSortingRepository extends CrudRepository extends Repository

-> 부채만 쌓여간다
❓ 도대체 언제 구현할까
❗ 실제 구현은 JPA가 한다

❓ JPA
: Java에서 ORM에 대한 API 표준 명세
(ORM: 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 도구)
(API: 다른 프로그램이 제공하는 기능을 제어하는 것)
Comments