3

特に参照整合性制約違反の場合に備えて、SpringMVC と Hibernate を使用するアプリケーションのクライアント側のデータ検証を自動化したいと考えています。私のアプリケーションの構造の単純なバージョンは次のとおりです。

DB

いくつかのテーブルを含むOracle dbがあります。例を見てみましょう

DOCUMENT整数の主キーDOC_KEYTITLEフィールドを持つテーブル外部PAGEキーFK_DOCUMENT_ID、キーPAG_KEY、テキスト "TEXT" フィールドを持つテーブル。

ORM/アプリケーション層

これらのテーブルをマッピングする2つの(休止状態の)エンティティ(Documentおよび)があります。Pageを作成するには事前にPageを作成する必要がありますが、関連するを外部キー フィールドに指定せずDocumentに を作成することはできません。PageDOC_KEY

ウェブ層

ユーザーがいくつかのページで新しいドキュメントを作成できるフォームを作成しました。ドキュメントのタイトルと 1 つまたは複数のページを挿入できます。Pageタイトルを指定せずにオブジェクトを作成しようとするDocumentと、ページにドキュメントが指定されていないため、DB エラーが発生します。

ユースケースの例

ユーザーは、ドキュメントのタイトルを指定せずにコンテンツを設定するページを作成しようとします。クライアント側のバリデーターは、ユーザーに入力を求めるタイトル フィールドを赤でマークします。

質問

挿入しようとしているエンティティ/オブジェクト/行が FK 整合性ルール チェックを満たさない場合にサーバー側の呼び出しを回避するために、クライアント側の検証ルールを自動的に生成することは可能ですか?

または、クライアント側の検証ツールが外部キーの一貫性を「理解」できるようにするツールはありますか?

jquery を試してみましたが、外部キーの一貫性を自動的にチェックする方法を見つけることができませんでした。

編集: *受け入れられた回答に関する注意事項* もちろん、クエリを実行したり、クライアント側でキャッシュしたりせずに db クライアント側の状態を知る方法はありませんが、キーが存在し、整合性制約が満たされているかどうかを確認するには、その知識が必要です。私の受け入れられた答えは、質問の焦点と一致しています。事前に考えておくべきだった

4

3 に答える 3

1

休止状態のエンティティでデータベース ルールを宣言する場合 (推奨)、JSR303JSプロジェクトを確認することをお勧めします。私はそれを自分で使用したことがなく、あまりアクティブではないようですが、自分自身に実装する方法についてのアイデアが得られるはずです.

于 2013-09-09T09:30:36.367 に答える
1

挿入しようとしているエンティティ/オブジェクト/行が FK 整合性ルール チェックを満たさない場合にサーバー側の呼び出しを回避するために、クライアント側の検証ルールを自動的に生成することは可能ですか?

答えはノーです..!!

データベースは、異なる外部キー関係マッピングを使用して設定でき、マッピング クラスで外部キー関係を指定することにより、その整合性を維持できます。しかし、休止状態はフロントエンドでは何もしません.!!

休止状態の注釈を使用して検証を行うことができますが、それはバックエンドでのみ行うことができます。 Hibernate はフロントエンドを扱いません。

要件は理解していますが、休止状態はフロント エンド ツールではありません。DB 通信に関連するすべての操作はバックエンドにとどめておく必要があることをお勧めします。そうしないと、セキュリティ フリークへのエントリ ポイントになります。サービス層の背後に置いたほうがよいでしょう。

于 2013-09-09T10:21:20.017 に答える