Notice
Recent Posts
Recent Comments
Link
jiny
[Data jpa] Querydsl 적용하기 본문
spring boot 2.7.7 사용 , java 11 ( 스프링 부트 버전이 3.0 이상일 경우 java 18 선택 )
build.gradle 파일에 아래처럼 등록합니다
plugins 영역에 추가
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
dependencies 영역에 추가
//querydsl 추가
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
빈부분에 추가
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝
테스트하기
main -> java -> 자신의 패키지 아래에
Hello class 파일 생성
인텔리 J 우측 상단 Gradle 탭 클릭 후 compileQuerydsl 우측 클릭 후
Run 실행을 하면 Hello 파일을 통해 Q타입의 파일이 생성된다
build > generated > 내부에 QHello 파일 생성 확인
Q타입 파일을 이용하여 query 구문을 사용할 수 있다
ctrl + shift + T 를 클릭하여 테스트 파일 생성
1. 영속성 컨텍스트에 hello 저장
2. JPAQueryFactory 는 EntityManager를 주입받아 사용된다
3. build 폴더 내부에 생성된 QHello 를 가져온다
QHello("별칭") 생성자에 별칭을 넣거나, QHello 안의 static 객체인 QHello.hello 를 불러온다
별칭을 m으로 설정시 querydsl 이 jpql로 변환되어 실행될 때 select m from member m 으로 실행
4. JPAQueryFactory 를 통해 Q타입 객체에 대해서 querydsl 전용 query를 실행한다
5. 저장한 엔티티와 slect 로 불러온 엔티티가 같다
'JAVA > JPA' 카테고리의 다른 글
[JPA] 좋아요 기능 동시성 테스트 및 락기능 활용하기 (0) | 2023.03.09 |
---|