3

Token という名前のオブジェクトがあります。ID、名前、および値があります。いくつかのデータを db に保存した後、それらを Web ページにロードしました

_____________________________________________
|____name____|____value____|____operation____|
   tkn1          10               ×
   tkn2          20               ×

この×サインにより、サーバーコレクションからトークンを削除できるようになりました。値 30 のトークン tkn3 を追加して削除tkn2したため、テーブルは次のようになります。

_____________________________________________
|____name____|____value____|____operation____|
   tkn1          10               ×
   tkn3          30               ×

コレクションへのこれらの変更により、削除されたレコードと追加されたレコードを決定する方法をデータベースに反映するにはどうすればよいですか?

私は2つの解決策を適用しました:

  1. ビジネスロジックレイヤーで古いデータと新しいデータを比較し、データベースに送信する2つのリストの違いを見つけました。最初のリストには追加されたトークンが含まれ、2番目には削除されるトークンのIDが含まれています。
  2. status という名前のフラグをオブジェクトに追加しました。フラグを追加すると NEW です 削除すると、フラグを DELETE に設定し、DB レイヤーでコレクションを 1 つずつオブジェクトを反復処理し、フラグを確認します。NEW の場合レコードを追加し、 DELETE の場合は削除し、SAVED (変更なし) の場合は変更しません。

私の質問:

  • この方法は、このタスクを実行するのに適していますか..?
  • このタスクを達成するためのパターンはありますか?
  • Hibernate はそれを行うのに役立ちますか?
4

2 に答える 2

1

• この方法は、このタスクを実行するのに適していますか..? いいえ

• このタスクを達成するためのパターンはありますか? はい

• Hibernate はそれを行うのに役立ちますか? Hibernate は、List プロパティの Cascade Attribute を使用して、このような状況の解決策を提供します。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/collections.htmlを参照してください 。

http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/

于 2012-10-08T08:48:03.827 に答える