У меня вопрос, когда использовать шаблон спецификации, а когда использовать конкретный запрос SQL.
Я понял, что конкретный шаблон должен собирать всю коллекцию и постфильтр с использованием конкретной спецификации. Но я не понимаю преимущества перед конкретным SQL-запросом.
CarColorSpecification cc = new CarColorSpecification(RED);
CarAgeSpecification ca = new CarAgeSpecification(OLDER, 5);
ISpecification finalSpec = cc.And(ca);
List<Car> res;
List<Car> carColl = service.getCars();
foreach(Car c in carColl) {
if(finalSpec.isSatisfiedBy(c)) {
res.add(c);
}
}
И то же самое в SQL / Hibernate
FROM Car c WHERE c.color = RED AND c.age > 5
Я думаю, это зависит от объема обрабатываемых данных.