私は、データモデルとビジネスレイヤーが2つの異なるモジュールにあるプロジェクトを持っています。もちろん、ビジネスモジュールはモデルモジュールに依存しています。エンティティ検証はjava-validation-apiアノテーションによって実装されます。私は(別のエンティティタイプ間の関係が検証されるビジネス検証、)クロスエンティティの検証を実装する必要がありますどこクロスエンティティ検証を実装する場所は?
は、私は思ったんだけど。現在、以下のオプションがあります。
- カスタムjavax.validation.ConstraintValidatorsと関連付けられた注釈を作成します。問題は、バリデーターがビジネスサービスへのアクセスを必要とする、すなわち関連するエンティティを検索する必要があるが、モデルモジュールはビジネスモジュールへの依存性を持たないことである。
- ビジネスサービスの永続/マージメソッド(つまりインターセプタを使用)でエンティティ間の妥当性検証を実装します。これは可能ですが、エンティティの検証とのクロスエンティティの検証は分離されており、検証のための場所は1つだけです。望ましいオプション
?より良い提案はありますか?
おかげで、 セバスチャン
返信ありがとうございます。 –
別のレイヤーにデータアクセスメソッドだけでなく、検証に必要な複雑な計算がある場合は、オプション2を使用するのがいいでしょうか?または他の? –
モデルも複雑な計算をするのに適しています.1つは可能な限りMVCに固執したいと思えば、もっと良く見えます。明らかに、これらの計算がサービスレイヤーで実行されていて、オプション2を使用して他の場所に移動することは意味がありません。 –