私はJavaでエンタープライズアプリケーションに取り組んでいます。データベースとの対話には、EJB を使用します。
データベースには多くのテーブルがあり、それらの値は Web UI から編集できます。今のところ、ユーザーが何らかの変更を加えると、これらの変更はすぐにデータベースに書き込まれます。
しかし、ユーザーがWebページの大きな「保存」ボタンを押すまで、すべての変更を保留する(永続化しない)必要があります。同時に、すべての変更をユーザー セッション間で保存する必要があるため、単に Bean やクライアント側に保存することはできません。ユーザーがコンピューターを再起動したり、別のデバイスからアプリケーションにアクセスしたりしても、すべての変更は保持されます。したがって、保留中の変更をどうにかして永続化する必要があります。
私が考えた最初の解決策は、「tmp」のようなプレフィックスを付けて、編集可能なすべてのテーブルのコピーを作成することでした。ユーザーが何かを変更すると、新しい値を「tmp_something」に保存します。ユーザーが最後に「保存」を押すと、変更内容が「tmp_something」からメインの「something」テーブルに移動されます。tmp_ テーブル内の異なるユーザーからレコードを分離するために、それらすべてに「user_id」と呼ばれる追加の列があります。したがって、すべてのユーザーに対して、テーブルのコピーが 1 つ必要になります。
実際、私はこの解決策がまったく好きではありません! 多くのコードを書き直し、新しいテーブルごとに新しいクラスを作成する必要があります...
そして私の質問:私がやりたいことをするためのより良い方法はありますか?