Spring

JPA Specification Interface

YunSeong 2024. 8. 2. 13:29
728x90
반응형

Specification은 쿼리를 보다 정교하게 작성할 수 있게 해주는 JPA 도구이다.

DB 검색을 더 유연하게 다룰 수 있고, 복잡한 검색 조건도 처리할 수 있다.

// 다음과 같은 함수로 Query를 이용한 Specification 객체를 얻을 수 있다.
private Specification<T> search(String keyWord) {
    return new Specification<T>() {
        private static final long serialVersionUID = 1L;
        @Override
        public Predicate toPredicate(Root<T> q, CriteriaQuery<?> query, CriteriaBuilder cb) {
                // build query here
        }
    };
}

 

여기서 query는 Criteria로 짜게 된다.

 

위 파라미터는 다음과 같다.

Root : 쿼리에서 엔티티의 기본 식별자를 정의

CriteriaQuery : 쿼리의 구조를 정의하는 객체

CriteriaBuilder : Criteria 쿼리를 생성하는 데 필요한 빌더 객체

 

// 다음과 같이 Specification을 이용해서 조건에 맞는 Entity들을 가져올 수 있다.
List<T> findAll(Specification<T> spec);

 

728x90
반응형

'Spring' 카테고리의 다른 글

Thymeleaf html에서의 문법  (0) 2024.08.01
Spring JPA의 Entity란?  (0) 2024.08.01
JPA 쿼리 메서드  (0) 2024.07.30
Spring Service, Controller의 차이점  (0) 2024.07.30
Java Package와 Directory의 차이점  (0) 2024.07.30