티스토리 뷰
프로젝트중 동적쿼리와 복잡한 쿼리를 사용하게 되는 경우, 네이티브 쿼리를 사용했다.
네이티브 쿼리까진 좋은데 동적쿼리를 네이티브 쿼리로 짤때마다 쿼리 검사시간때문에 부팅시간이 느려지는 현상이 발생했다.
이를 방지할 방법이 뭐가 있을까 하다 QueryDsl을 사용하기로 했다.
Pom.xml
Maven 디펜던시 설정
<!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa -->
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>4.1.4</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-core -->
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-core</artifactId>
<version>4.1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-apt -->
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-sql -->
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-sql</artifactId>
<version>4.1.4</version>
</dependency>
Plugin 설정
(outputDirectory 경로 설정에 따라 QClass 생성위치가 정해진다.)
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
Querydsl config 설정
QuerydslConfig.java
(JPAQueryFactory를 bean으로 생성해둠)
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.querydsl.jpa.impl.JPAQueryFactory;
@Configuration
public class QuerydslConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}
'Spring boot > JPA' 카테고리의 다른 글
09. JPA - @Temporal annotation (0) | 2022.07.27 |
---|---|
08. JPA - QueryDsl 기본 사용 방법 (0) | 2022.01.27 |
06. JPA - @Temporal annotation (0) | 2021.11.16 |
05. JPA - Pageable을 통한 페이징 처리 (0) | 2021.06.15 |
04. JPA - Pageable (페이징 처리) (0) | 2021.06.14 |
댓글