Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- LazyInitializationException
- 예외처리
- springboot
- 사설IP
- querydsl
- 공인IP
- 낙관적 락
- smtp
- 쉘스크립트
- api 성능최적화
- 타임리프 예외처리
- JPA
- DATA JPA
- HTTP API
- 스프링 예외처리
- 지연로딩
- 스프링부트
- jpa 성능최적화
- 비관적 락
- 스프링 공통데이터
- password
- validation
- 타임리프
- 좋아요 기능
- spring 예외처리
- JPA #N+1 #JPA API #API
- thymeleaf
- jpa hint
- thymleaf
- 쿠키 #세션 #쿠키세션정리
Archives
- Today
- Total
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 로 불러온 엔티티가 같다