8

DAOレイヤーは通常、特定の入力(user_idなど)を指定してDBからデータにアクセスする責任があるため、入力の有効性をチェックする必要がありますか?

たとえば、(> 0) 主キーである user_uid に基づいてユーザーをフェッチする DAO メソッドがある場合、必要な DB 呼び出しを行う前に、DAO メソッドは常にこの制約をチェックする必要がありますか? または、このメソッドを呼び出す上位のレイヤーが制約を処理し、-ve id を渡さないと想定する必要がありますか? DAO メソッドは、この制約をドキュメントで公開できるため、上位層を作成するプログラマーはそれを認識できます。

通常、どのアプローチを使用しますか?またその理由は何ですか?

よろしくお願いします!

4

2 に答える 2

7

DAO レイヤーは、入力の有効性をチェックするべきではありません。データの整合性と一貫性は永続層 (外部キーなど) でチェックされ、「ビジネス」関連の有効性はビジネス層でチェックされます。DAO 層の唯一の責任は、永続層と通信してデータを保存または取得することです。

于 2011-07-09T17:24:20.580 に答える
5

答えは、ビジネス レイヤー (おそらくデータ レイヤーの上) がこれらの値を検証しているかどうか、およびデータ レイヤーを他のレイヤー (ワークフロー レイヤーなど) から呼び出すことができるかどうかによって異なります。

一般に、ビジネス レイヤーで検証をまとめ、レイヤー通信を制限して、データ レイヤーがビジネス レイヤー経由でのみ呼び出されるようにすることをお勧めします。

また、将来別のサービスが無効なデータを挿入しようとする場合に備えて、ストアド プロシージャにキー/null 検証チェックを追加します。

于 2011-03-09T06:21:08.513 に答える