Tuesday, March 19, 2019

Spring JPA와 Query By Example(QBE) 활용 가이드

Spring JPA를 이용하다 보면 복잡한 쿼리들 특히나 복잡한 where clause등을 jpa repository의 CamelCase로 기본 지원되는 것들이 한계가 있었다. 이러한 경우, @query 어노테이션을 활용해 직접 쿼리문을 만들어 사용하였지만, JPA에는 QBE(Query By Example)라는 좋은 기능이 있습니다.

QBE의 핵심은 ExampleMatcher에 있습니다. ExampleMatcher에서 지원하는 여러 메소드를 이용해 검색 대상을 선정할 수 있습니다.

QBE 사용 예시


Example<Person> example = Example.of(new Person("Jon", "Snow"));
repo.findAll(example);

ExampleMatcher matcher = ExampleMatcher.matching().
    .withMatcher("firstname", endsWith())
    .withMatcher("lastname", startsWith().ignoreCase());

Example<Person> example = Example.of(new Person("Jon", "Snow"), matcher); 
repo.count(example);

위 코드에서 첫 번째 예제는 이름과 성이 각각 "Jon"과 "Snow"인 사람들을 찾아내고, 두 번째 예제는 이름이 'n'으로 끝나고 성은 대소문자 구분 없이 'S'로 시작하는 사람들의 수를 찾아냅니다.

참고 링크

더 자세한 내용은 위 링크에서 확인하실 수 있습니다.


0 개의 댓글:

Post a Comment