Статьи

Контекстная проверка в Java

Здесь мы рассмотрим различные способы проведения валидации, что такое контекстная валидация и почему она превосходит все остальные методы.


Вам также может понравиться:
Проверка в приложениях Java

Контекстно-независимая валидация, привязанная к модели данных

Большинство современных фреймворков вынуждают нас, пользователей, проверять модель данных. По крайней мере, режим по умолчанию для большинства из нас — просто привязать правила проверки к конкретным полям в модели данных. Что не так с этим подходом?

Рассмотрим пример, когда гость регистрирует новый заказ на доставку еды. Компания, которая стоит за этой услугой, которая на самом деле готовит заказ, называется SuperFood. Вот как выглядит вся пользовательская история:

Вася в качестве гостя заходит на сайт SuperFood и регистрирует там заказ.

Бэкэнд-сервис SuperFood должен обеспечить несколько ограничений, прежде чем помещать вещи в базу данных. Один из них — убедиться, что передан либо адрес электронной почты, либо номер телефона.

Теперь предположим, что другой пользователь регистрирует заказ в SuperFood, но на этот раз через какой-либо сервис-агрегатор назовите его AggreA. Этот порядок не сильно отличается от того, который зарегистрирован на сайте SuperFood, хотя ограничения, которые должны соблюдаться, отличаются. Например, передача номера телефона необходима для этого агрегатора, а электронная почта не обязательна.

Теперь третий пользователь регистрирует заказ в SuperFood, и она делает это через какой-то еще агрегаторный сервис AggreB. И для этого, передача номера телефона не нужна, но электронная почта является обязательным.

Итак, у нас следующая ситуация. У меня есть одна модель данных для заказа, но есть как минимум три контекста с другим набором ограничений. Я могу пойти традиционным путем: представить сущность, соответствующую строке базы данных, и наложить эти ограничения с помощью аннотаций или файлов конфигурации или любым другим способом, к которому я привык. Проверка модели данных поддерживает следующий подход:


Джава