2011-07-26 3 views
0

このような状況です。多数のフィールド(複数のタブに30以上の広がりがある)を持つフォームがあり、パフォーマンスに最小限の影響を与えて保存する前に変更された値を見つけることができます。編集のために、単一のレコードが複数のデータベースから照会されます。値は、値のオブジェクトとしてクライアント側に渡されます。現時点では、フォーム内のフィールドにはバインドされていません。保存する前にフォームのどの値が変更されたかを確認するにはどうすればよいですか?

私の最初のアイデアは、各フィールドが変更されるたびに真または偽に設定するブール型フラグを各フィールドに持たせることでした。保存時に、プログラムはフラグのリストを実行して、どのフィールドが変更されたかを確認します。これは私にとってはちょっと厄介なことだと思っていたので、サーバー側でやっているかもしれないと思っていました。しかし、私は各フィールドを1つ1つチェックして、どのレコードがdbレコードと一致していないかを確認したくありません。

ここで何をすればいいですか?

答えて

0

これは、多くのFlexアプリケーションにとって非常に一般的な問題です。それが頻繁に起こるので、データ管理の商業的実装がいくつかあります。クエリはエンティティに格納され、エンティティはクライアント側のフォームにバインドされます。フィールドが更新されるたびに、変更がdbに永続化され、要求があったときにロールバックを実行するステップが自動的に実行されます。

アドビLCDSデータ管理 - あなたはJava環境で WebOrbを扱っている場合 - あなたは、.NETを扱っている場合は、PHP、Javaの、あなたは再発明車輪とロールバックすることができます。もちろん環境

レールあなた自身で、各フィールドのPropertyChangeEventリスナーを設定します。変更がディスパッチされたら、それらのリスンを聞き取り、それぞれのハンドラを記述します。

0

これは、私がクライアントのために取り組んでいるプロジェクトの1つと、まったく同じように思えます。

私たちが行うことは、値オブジェクトをUIに戻すことです。その後、更新サービスを呼び出すと、私は元のオブジェクトと新しいオブジェクトの両方を送信します。このサービスでは、フィールド値をサーバー上で比較して、どの値をデータベースに送信するかを決定します。

すべてのフィールド/プロパティを変更したかどうかに基づいて条件付きで更新する必要がある場合は、私はフィールド/プロパティごとにチェックを避ける方法は見当たりません。ブール値のアイデアを実装し、何か変更があった場合でもUIのフラグを交換しても、更新する必要があるかどうかを判断するためにクエリを作成するときに、ブール値をチェックする必要があります。

私の状況では、UIに返される値オブジェクトを作成するために3つの異なるデータベースがクエリされます。フィールドの更新は、それらのデータベースの1つに保存され、選択を実行するときに優先順位が与えられます。したがって、ストアドプロシージャ内でフィールド比較による明示的なフィールドが発生しています。

フィールドごとの比較ではなく、レコードごとの比較の場合は、 Record/Value Objectが変更されたことを知らせるBooleanメソッドは、時間とコードを節約します。

関連する問題