QueryDSL

wangjh789·2022년 8월 19일
0

[Spring] 스프링-DB-2

목록 보기
8/21

기존의 JPA 방식대로라면 jpql은 string으로 짜다보니 런타임 에러가 발생 할 수 있다.

QueryDSL 등장

JPA,MongoDB,SQL 같은 기술들을 위해 type-safe SQL을 만드는 프레임워크이다.

Annotation Processing Tool로 (JPA같은 경우)
@Entity 에노테이션이 붙은 클래스의 Q객체를 만든다.

QueryDSL-JPA은 JPQL을 만들어주는 빌더 역할을 한다고 보면 된다.

만약 JPQL로 해결하기 어려운 복잡한 쿼리는 네이티브 SQL쿼리를 사용해라

설정

// build.gradle
dependencies {
	//QueryDsl 추가
	implementation "com.querydsl:querydsl-jpa"
	annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"
    ...
}
// build.gradle
// QueryDsl 추가 , 자동 생성된 Q클래스 gradle clean으로 제거
clean{
	delete file('src/main/generated')
}

만약 intelliJ 빌드 시 gradle clean으로 삭제하고 싶다면 위 코드를 추가한다.
Q타입은 컴파일 시점에 자동 생성되므로 git에 포함하지 않는 것이 좋다.

Gradle 빌드

gradle을 통해서 실행

만약 gradle로 build 설정이 되어있다면

빌드 후에 컴파일 자바 작업 수행해서 Q클래스를 만든다.

gradle로 빌드를 하게된다면 /build 디렉토리에 Q타입이 생성이 된다.

IntelliJ

인텔리제이가 자바를 찾아서 실행

인텔리제이로 build 설정


프로젝트 build를 실행하면 /src/main/generated 하위에 Q타입이 생성된다.

만약 에러 발생시 querydsl gradle 키워드로 검색

profile
기록

0개의 댓글