1

DBエンティティクラスMyClassのインスタンスがあるとします。このエンティティには、すべて「nullにすることはできません」というタグが付けられた3つのフィールドがあります。このクラスのオブジェクトを作成し、それを渡して永続化すると、DBレイヤーは、オブジェクトを永続化しようとすると例外をスローします。 3つのフィールドに入力します。この状況でのベストプラクティスは何ですか。MyClassのコンストラクター、セッターメソッドは、すべてのフィールドが正しいことを検証し、そうでない場合は文句を言いません。または、無効なオブジェクトの作成を許可し、DBレイヤーに文句を言わせますか?

4

1 に答える 1

4

1)クライアントが無効なデータを送信しないようにする必要があります

2)1を実行した場合でも、サーバーで検証する必要があります。人々はcurlとwgetで奇抜なことを試みます...

3)受信データが有効であることをサービスレイヤーでチェックインします。そうでない場合は、ある種のエラーコードをクライアントに返し、保存すらしません。単純なケースではvalidate、ドメインクラスにメソッドがあります。複雑なケースでは、たとえば、送信されたデータをDB内のデータと照合する必要がある場合など、検証を行うためのサービスメソッドを作成します。すべてのケースをカバーする検証を行う正​​しい方法は1つではありません。

保存を実行して例外をキャッチする際の問題は、このエラーを発生する可能性のある他のエラーと区別することが難しい場合があることです。さらに、検証コードをテストするのは簡単であり、サービスは検証の失敗に対して正しいことを行います。さらに、検証ロジックはビジネスルールであり、ビジネスルールを簡単にテストできることは常に良いことです。

于 2012-07-25T15:05:34.107 に答える