스프링 데이터 Common 10. QueryDSL 연동 - KwangtaekJung/inflearn-spring-data-jpa-keesun GitHub Wiki
findByFirstNameIngoreCaseAndLastNameStartsWithIgnoreCase(String firstName, String lastName)
-
여러 쿼리 메소드는 대부분 두 가지 중 하나.
- Optional findOne(Predicate): 이런 저런 조건으로 무언가 하나를 찾는다.
- List|Page|.. findAll(Predicate): 이런 저런 조건으로 무언가 여러개를 찾는다.
- QuerydslPredicateExecutor 인터페이스
-
QueryDSL
- http://www.querydsl.com/
- 타입 세이프한 쿼리 만들 수 있게 도와주는 라이브러리
- JPA, SQL, MongoDB, JDO, Lucene, Collection 지원
- QueryDSL JPA 연동 가이드
-
스프링 데이터 JPA + QueryDSL
- 인터페이스: QuerydslPredicateExecutor
- 구현체: QuerydslPredicateExecutor
-
연동 방법
- 기본 리포지토리 커스터마이징 안 했을 때. (쉬움)
- 기본 리포지토리 커스타마이징 했을 때.
<=SimpleJpaRepository 대신 QuerydslJpaRepository를 상속 받아서 사용하면 된다.
- (추가) deprecated되었다. 그냥 SimpleJpaRepository를 쓰면 됨.
의존성 추가
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<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>
public interface AccountRepository extends JpaRepository<Account, Long>, QuerydslPredicateExecutor<Account> {
}