0

アプリケーションのいくつかのレイヤーで検証が必要であることを理解しています。ただし、適用される検証がすべてのレイヤーで同じである場合 (ほとんどの場合)、共通の検証フレームワークを使用することは理にかなっています。それが Hibernate Validator の目標の 1 つです。

オブジェクトの有効な状態を確保するために、エンティティのセッター内に検証を配置する予定です。また、Hibernate がそれらを使用してエンティティ オブジェクトを永続化する前に検証できるように、エンティティに注釈制約を設定しました。次に、独自の検証 (基本的に Hibernate アノテーションと同じ制約をチェックする) を記述する代わりに、セッター内で Validator インスタンスを使用してプロパティを検証しないでください。私はそれを使うことができvalidator.validateProperty()ました。

しかし、私の懸念はパフォーマンスです。ValidatorFactory を構築し、各セッター内でバリデーターのインスタンスを取得するのはコストがかかりますか? それとも、パフォーマンスについて考えすぎていますか? Validator を使用しない場合は、セッター内の検証に Apache Commons ライブラリを選択します。

それで、どちらがより良い方法ですか?

4

1 に答える 1

2

4.2 以降の Hibernate Validator の一部であり (リリース 1.1 で Bean Validation API の一部になります)、呼び出し時にパラメーター値を自動的に検証できるmethod-level validationを見たことがあるかもしれません。そうすれば、アーキテクチャに応じて、AOP、動的プロキシなどを使用してセッターパラメーターを検証できます。

パフォーマンスに関しては、通常ValidatorFactory、アプリケーション用に 1 つだけ作成し、これをキャッシュする必要があります。通常、同じファクトリからバリデータを取得するのは安価な操作です。もちろん、実際のコストは制約の種類と数に依存するため、パフォーマンス分析を自分で実行して、ホット スポットがあるかどうかを確認することもできます。

于 2013-02-04T21:10:49.123 に答える