728x90
반응형
💡Querydsl
💁♀️ @Query 어노테이션 안에 JPQL문법으로 문자열을 입력하기 때문에 잘못 입력하면 컴파일 시점에 에러를 발견할 수 없습니다. 이를 보완하는 방법으로 Querydsl가 있습니다.
💡Querydsl 장점
▪️ 고정된 SQL문이 아닌 조건에 맞게 동적으로 쿼리를 생성할 수 있습니다.
▪️ 비슷한 쿼리를 재사용할 수 있으며 제약 조건 조립 및 가독성을 향상시킬 수 있습니다.
▪️ 문자열이 아닌 자바 소스코드로 작성하기 때문에 컴파일 시점에 오류를 발견할 수 있습니다.
▪️ IDE의 도움을 받아서 자동 완성 기능을 이용할 수 있기 때문에 생산성을 향상시킬 수 있습니다.
💁♀️Querydsl을 사용하기 위해서는 설정을 추가해야합니다.
▪️ pom.xml 파일의 <dependencies> </dependencies> 사이에 의존성 추가
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>4.3.1</version>
</dependency>
▪️ pom.xml에 Qdomain이라는 자바 코드를 생성하는 플러그인을 추가한다.
<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>
💡JPAQuery 데이터 반환 메소드
List<T> fetch() | 조회 결과 리스트 반환 |
T fetchOne() | 조회 결과 대상이 1건인 경우 |
T fetchFirst() | 조회 대상 중 1건만 반환 |
Long fetchCount() | 조회 대상 개수 반환 |
QueryResult<T> fetchResults() | 조회한 리스트와 전체 개수 반환 |
▪️ "%"는 like이다.
▪️ Long을 사용한 이유는 조회 대상 개수가 무수히 많을 수 있기 때문에 Integer를 사용하지 않는다.
JPAQuery<Item> query = queryFactory.selectFrom(qItem)
.where(qItem.itemSellStatus.eq(ItemSellStatus.SELL))
.where(qItem.itemDetail.like("%" + "테스트 상품 상세 설명" + "%"))
.orderBy(qItem.price.desc());
▪️ .을 붙이면서 앞에서 끝난 결과를 뒷 부분에서 실행한다.
728x90
반응형
'Back-End > Spring Boot' 카테고리의 다른 글
Spring Boot - BootStrap (0) | 2022.07.22 |
---|---|
Spring Boot - Maven Repository 확인하기 (0) | 2022.07.22 |
Spring Boot - 쿼리 메소드 (0) | 2022.07.22 |
Spring Boot - Repository 설계하기 (0) | 2022.07.22 |
Spring Boot - 엔티티 매핑 관련 어노테이션 (0) | 2022.07.22 |
댓글