2012-10-17 2 views
3

프로젝트 중 하나에서 스프링 데이터를 사용하고 있습니다. 쿼리가 복잡해지면서 Spring Data Specification 또는 QueryDSL을 추가 할 생각입니다.스프링 데이터 사양 또는 QueryDSL

그러나 앞으로 나아갈 가장 좋은 방법은 확실하지 않습니다. 나는 그들이 둘 다 같은 목적을 위해 봉사한다고 생각한다. 어느 쪽이 다른 쪽보다 추천 받고 있습니까?

감사

답변

4

봄 데이터 사양은 조금 자세한 비교 Querydsl

public CustomerSpecifications { 

    public static Specification<Customer> customerHasBirthday() { 
    return new Specification<Customer> { 
     public Predicate toPredicate(Root<T> root, CriteriaQuery query, CriteriaBuilder cb) { 
     return cb.equal(root.get(Customer_.birthday), today); 
     } 
    }; 
    } 

    public static Specification<Customer> isLongTermCustomer() { 
    return new Specification<Customer> { 
     public Predicate toPredicate(Root<T> root, CriteriaQuery query, CriteriaBuilder cb) { 
     return cb.lessThan(root.get(Customer_.createdAt), new LocalDate.minusYears(2)); 
     } 
    }; 
    } 
} 

에 비교이

QCustomer customer = QCustomer.customer; 
LocalDate today = new LocalDate(); 
BooleanExpression customerHasBirthday = customer.birthday.eq(today); 
BooleanExpression isLongTermCustomer = customer.createdAt.lt(today.minusYears(2)); 

당신은 당신이 선택 할 수 있습니다 복잡한 쿼리를 처리하기 위하여려고하는 경우 Querydsl. 더 컴팩트하므로 크기가 더 좋아질 것입니다.

이 답변은 내가 Querydsl의 관리자이기 때문에 편향되어 있습니다.