JPA 심화 3-5

5w31892p·2023년 2월 4일
0

JPA 심화

목록 보기
15/19

Query by Example

  • 받고싶은 예시객체를 만들어서 조건절로 사용하는 기술
  • 예제 객체를 가지고 쿼리 만듦
  • 현업에서 잘 사용하지 않지만 가끔 필요할 때가 있음

:: 구성요소

  1. Example
    • Probe 와 ExampleMatcher 을 하나로 합친 것
    • 이 합친 것으로 쿼리 수행
  2. Probe
    • 필드에 어떤 값들을 가지고 있는 도메인 객체
  3. ExampleMatcher
    • Prove에 들어있는 그 필드의 값들을 어떻게 쿼리할 데이터와 비교할지를 정의한 것

:: 기능

  • 별다른 코드 생성기(QClass 같은)나 애노테이션 처리기(@Qeury같은) 필요 없이 그냥 사용하면 됨
  • 도메인 객체가 수정되면 같이 반영됨 (필드나 함수를 그대로 쓰기때문에)
  • 독립적인 인터페이스를 가져서 영향도가 적음

::제한사항

  • 여러필드 조합해서 조건만드는 nested 또는 자식 Collection 제약 조건을 못 만든다.
  • 문자열은 starts/contains/ends/regex 가 가능하고 그밖에 필드는 값이 정확히 일치해야 한다

:: 사용방법

  • Repository Interface 에 QueryByExampleExecutor 의존성 추가해야 함

  • 스프링 Query by Example 가이드

    // 적용 예시
    
    public interface UserRepository extends JpaRepository<User, Long>, QueryByExampleExecutor<User> {

GitHub 실습코드

0개의 댓글