0

私はJavaでエンタープライズアプリケーションに取り組んでいます。データベースとの対話には、EJB を使用します。

データベースには多くのテーブルがあり、それらの値は Web UI から編集できます。今のところ、ユーザーが何らかの変更を加えると、これらの変更はすぐにデータベースに書き込まれます。

しかし、ユーザーがWebページの大きな「保存」ボタンを押すまで、すべての変更を保留する(永続化しない)必要があります。同時に、すべての変更をユーザー セッション間で保存する必要があるため、単に Bean やクライアント側に保存することはできません。ユーザーがコンピューターを再起動したり、別のデバイスからアプリケーションにアクセスしたりしても、すべての変更は保持されます。したがって、保留中の変更をどうにかして永続化する必要があります。

私が考えた最初の解決策は、「tmp」のようなプレフィックスを付けて、編集可能なすべてのテーブルのコピーを作成することでした。ユーザーが何かを変更すると、新しい値を「tmp_something」に保存します。ユーザーが最後に「保存」を押すと、変更内容が「tmp_something」からメインの「something」テーブルに移動されます。tmp_ テーブル内の異なるユーザーからレコードを分離するために、それらすべてに「user_id」と呼ばれる追加の列があります。したがって、すべてのユーザーに対して、テーブルのコピーが 1 つ必要になります。

実際、私はこの解決策がまったく好きではありません! 多くのコードを書き直し、新しいテーブルごとに新しいクラスを作成する必要があります...

そして私の質問:私がやりたいことをするためのより良い方法はありますか?

4

1 に答える 1

0

1.マルチトンパターンを試してみませんか。を含むシングルトン Bean を使用しますMap<Key, Object>。シングルトンはアプリケーション全体で使用でき、オブジェクトは一意のキーでアクセスでき、明示的に指示した場合にのみ永続化されます。これが役立つことを願っています

2.私はJava Transaction APIにあまり詳しくありません。しかし、それはあなたがチェックアウトできる別のオプションかもしれないと思います.

よろしく

于 2013-01-31T11:11:07.183 に答える