Spring Data JPA - Query By Example
Spring Data JPA
백기선님의 강의인 Spring Data JPA 강의를 듣고 공부한 내용을 정리한 글
Query By Example
백기선님은 이 기술을 한 마디로 계륵 같다고 표현하셨다.
왜 그런지 지금부터 하나씩 살펴보도록 하자.
개념적으로는 필드 이름을 작성할 필요 없이(구라임) 단순한 인터페이스를 통해 동적 쿼리를 만드는 사용자 친화적인 쿼리 기술이다. (감이 1도 안잡힌다.)
Example = Probe + ExampleMatcher
여기서 Probe란 도메인 객체를 의미한다.
ExampleMatcher는 Probe와 동일한 것들만 가져온다.
사용법은 아래와 같다.
@Test
fun qbe() {
val probe = Comment()
probe.isBest(true)
ExampleMatcher.matching()
.withIncludeNullValues()
.withMatcher("isBest", isTrue()) // 필드 이름 작성함. 앞서 구라라고 했던 부분이 여기임
}
딱 보면 알곘지만 굉장히 제한적인 기능을 갖고 있으며 리팩토링에 유연하지도 않다.
특히 여러 조건을 걸어서 조회하는 쿼리를 짜기도 어렵다.
e.q. 추천수가 가장 많고, 답글이 가장 많이 달린 댓글을 And로 가져오고 싶은 경우는 조회 불가
이 기능은 그냥 이런 기능이 있구나~ 하고 넘어가는 정도로.
Reference
인프런 백기선님의 스프링 Data JPA