Если DAO подтвердит ввод
Так как уровень DAO обычно отвечает за доступ к данным из БД при определенных входных данных (например, user_id и т. д.), должен ли он заниматься проверкой достоверности своих входных данных?
Например, если есть метод DAO для выборки пользователя на основе user_uid, который является (> 0) первичным ключом, то должен ли метод DAO всегда проверять это ограничение перед выполнением необходимого вызова БД? Или следует предположить, что любой уровень выше, который вызывает этот метод, позаботится об ограничении и никогда не передаст ему -ve идентификатор? Метод DAO может опубликовать это ограничение в своем документе, чтобы программисты, пишущие на более высоких уровнях, знали об этом.
Какой подход вы обычно используете и почему?
Спасибо и всего наилучшего!
2 ответа
Ответ зависит от того, проверяет ли эти значения бизнес-уровень (предположительно над уровнем данных), и можно ли вызывать уровень данных из каких-либо других уровней (например, уровня рабочего процесса).
Как правило, рекомендуется объединить валидацию на бизнес-уровне и ограничить обмен данными на уровне, чтобы уровень данных можно было вызывать только через бизнес-уровень.
Мы также добавляем проверку проверки ключа / нуля в хранимых процедурах на случай, если другая служба в будущем решит попытаться ввести недопустимые данные.
Уровень DAO не должен проверять достоверность ввода. Целостность и согласованность данных проверяются на уровне постоянства (например, внешние ключи), а валидность, связанная с бизнесом, проверяется на бизнес-уровне. Единственная ответственность уровня DAO - это связь с уровнем персистентности для хранения или извлечения данных.