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
반응형