1

一般的な質問:

これは、JSR303 Bean検証、Hibernateリファレンス実装を使用しています。

カスタム検証のセットがあるとします。それらのいくつかはデータベース接続を必要とします(注:DB要素マッピングにHibernateを使用していないため、残念ながらこれはオプションではありません)。たとえば、永続化する前に外部キーを検証したい場合があります。

とにかく、検証実装で使用できるようにするために、DB接続をValidator.validate(obj)メソッドに渡す方法がわかりません。セッションの一貫性の理由から、この接続は呼び出し元のコードで使用されているものと同じであることが重要です。

何か案は..?私が本当に必要としているのは、あらゆる種類のランタイム値をバリデーターの実装に取り​​込む方法です。

ありがとう、

アンディ

4

1 に答える 1

1

カスタムConstraintValidatorFactoryを作成して、オブジェクトをインスタンス化および構成できConstraintValidatorます。このファクトリは、データベース接続などの必要な依存関係を、作成された制約バリデーターに渡すことができます。

アプリケーションの配線に CDI を使用している場合は、 CDI に基づくバリデーターに依存性注入を提供するSeam Validation (免責事項: 私が作成者です) に興味があるかもしれません。Spring Framework を使用している場合は、制約バリデーターの実装内で依存性注入を利用することもできます。

于 2012-08-07T21:17:40.213 に答える