Specifications

  • DDD 책을 보면 명세라는 개념을 소개한다.

    • 언어 상관없이 and, or 조건을 조합해 쿼리할 수 있도록 하는 기능

  • 스프링 데이터 JPA는 JPA Criteria를 활용해 명세를 지원한다.

Predicate

  • org.springframework.data.jpa.domain.Specification

  • 참 또는 거짓으로 평가한다.

  • and, or 같은 연산자로 조합해서 다양한 검색 조건을 쉽게 생성한다.

public interface MemberRepository extends JpaSpecificationExecutor<Member> {
}
public interface JpaSpecificationExecutor<T> {

    Optional<T> findOne(@Nullable Specification<T> spec);

    List<T> findAll(Specification<T> spec);

    Page<T> findAll(Specification<T> spec, Pageable pageable);

    List<T> findAll(Specification<T> spec, Sort sort);

    long count(Specification<T> spec);
}
  • JpaSpecificationExecutor를 상속하면 사용할 수 있다.

  • 실무에서는 QueryDSL을 더 많이 쓰기 때문에 참고만 한다.

Last updated

Was this helpful?