Если DAO подтвердит ввод

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

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

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

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам