プロジェクトの 1 つで、Spring Data を使用しています。クエリが複雑になってきているので、Spring Data Specification または QueryDSL を追加することを考えました。
ただし、今後の最善の方法についてはわかりません。どちらも同じ目的を果たしていると思います。どちらかが他のものよりも推奨されていますか?
ありがとう
プロジェクトの 1 つで、Spring Data を使用しています。クエリが複雑になってきているので、Spring Data Specification または QueryDSL を追加することを考えました。
ただし、今後の最善の方法についてはわかりません。どちらも同じ目的を果たしていると思います。どちらかが他のものよりも推奨されていますか?
ありがとう
Spring Data 仕様は 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 のメンテナーであるため、この回答は偏っています。