Если DAO подтвердит ввод - PullRequest
8 голосов
/ 09 марта 2011

поскольку уровень DAO обычно отвечает за доступ к данным из БД при определенных входных данных (например, user_id и т. Д.), Должен ли он заниматься проверкой достоверности своих входных данных?

например. если есть метод DAO для выборки пользователя на основе user_uid, который является (> 0) первичным ключом, то должен ли метод DAO всегда проверять это ограничение перед выполнением необходимого вызова БД? Или следует предположить, что любой уровень выше, который вызывает этот метод, позаботится об ограничении и никогда не передаст ему -ve идентификатор? Метод DAO может опубликовать это ограничение в своем документе, чтобы программисты, пишущие на более высоких уровнях, знали об этом.

Какой подход вы обычно используете и почему?

Спасибо и всего наилучшего!

Ответы [ 2 ]

7 голосов
/ 09 июля 2011

Уровень DAO не должен проверять достоверность ввода.Целостность и согласованность данных проверяются на уровне постоянства (например, внешние ключи), а валидность, связанная с бизнесом, проверяется на уровне бизнеса.Единственная ответственность уровня DAO - это связь с уровнем персистентности для хранения или извлечения данных.

5 голосов
/ 09 марта 2011

Ответ зависит от того, проверяет ли эти значения бизнес-уровень (предположительно над уровнем данных), и может ли уровень данных вызываться из любых других уровней (например, уровня рабочего процесса).

Как правило, рекомендуется объединить проверки на бизнес-уровне и ограничить обмен данными на уровне, чтобы уровень данных можно было вызывать только через бизнес-уровень.

Мы также добавляем проверку достоверности ключа / нуля в хранимых процедурах на случай, если другая служба в будущем решит попытаться ввести недопустимые данные.

...