Pull to refresh

Comments 5

Пару лет назад мы перешли к использованию drools в том числе и для валидации. Невероятно удобнее, чем в java писать.
Например для:
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 все так же один из инструментов, который не покрывает все области.

Sign up to leave a comment.