2012-10-17 38 views
3

在其中一个项目中,我们使用Spring Data。现在查询变得越来越复杂,我们考虑添加Spring Data Specification或QueryDSL。Spring Data Specification或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的维护者。

相关问题