Где поставить валидацию кутом? - PullRequest
2 голосов
/ 12 февраля 2020

Где лучше всего разместить пользовательские проверки и несколько вариантов или условий, которые могут быть?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Я считаю, что DAO не должен содержать логики приложений c. Сервисный уровень должен выполнить все проверки и вернуть значимые сообщения об ошибках. В этом случае я бы попросил DAO найти продукт, и если он будет найден, то он будет дубликатом.

Теперь я собираюсь немного опровергнуть себя.

В моем коде DAO содержит базовые c проверки, такие как длина поля. Это параноидальные проверки, выполняемые в дополнение к проверкам приложения, поскольку сообщения об ошибках, создаваемые используемыми нами базами данных, в этих случаях бесполезны, а проверки дешевы. В случае дублированного первичного ключа сообщения об ошибках базы данных могут использоваться, и параноидальная проверка будет слишком дорогой. Но это может быть сделано в качестве меры безопасности, если вы чувствуете, что должны. Это в основном анализ затрат и выгод.

1 голос
/ 12 февраля 2020

Я согласен с @Jonathan - но есть немного другой способ express, если это поможет.

Что считается «уже существующим» названием продукта / псевдонимом? Мы говорим о точном совпадении строк? Нужно ли нам учитывать различия в вводе данных (верхний / нижний регистр; слова с / без акцентов / диакритические знаки и т. Д.)? Бизнес-логика c может быть достаточно сложной, если вам нужно более строгое String равенство.

Я предпочитаю помещать минимальное количество таких поисковых логик c в слой DAO, что часто сводится к тому, что содержится в предложении where оператора select (или в варианте Hibernate ORM). Не думайте о таких логиках c как о «проверке на наличие дубликатов», а скорее как о возврате набора результатов. Это спецификация DAO c.

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

(Кстати, если опыт поможет вам, вам может понадобиться полнотекстовый индекс, если у вас его еще нет.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...