Comments 5
Например для:
class Request {
String string;
int number;
}
Мы пишем что-то типа:
rule "String is required"
when
Request(string == null || string == "")
then
report("string", "String is required")
end
Преимущество становится очевидным, если класс содержит десятки полей, композиции и есть зависимости полей друг от друга в рамках валидации (проверка города и страны).
В данном примере преимуществ совсем не видно, так как всё вот это ваше многословие реализуется через указание аннотаций @NotNull @NotBlank
Drools, конечно, мощная штука. Мы, на одном из проектов, как-то. использовали его для реализации булевой логики с дополнительной осью времени (там были отношения — до, после. между). Но, для многих команд он все же может показаться сложноватым в изучении, плюс тащит дополнительные зависимости. В то время как JPA и Bean validation идут прямо из коробки, если в проекте уже есть ORM.
Валидации только на уровне объектной модели в сложном проекте не достаточно. XSD schema тоже не панацея. А ещё есть экзотические БД у которых диапазоны float свои итп. А приложение должно работать с множеством БД. Drools как я знаю это mvel, который так же сильно ограничен и не особо удобен.
Так что bean validation все так же один из инструментов, который не покрывает все области.
Валидация в Java-приложениях