2010-12-14 4 views
1

:(様々な情報は、公共の場所でのLCD画面に表示されます)オンスクリーンディスプレイアプリケーションでドメインオブジェクトの永続状態と一時状態を混在させるにはどうすればよいですか?私はきれいに次のような問題解決するのですパターン/方法を探しています

を、私は、Hibernateは永続的なPOJOのを持っています私のアプリの管理部分で作成し更新することができます。

読み取り専用の「表示」部分では、これらのオブジェクトを使用します。永続状態で常に最新の状態になっている必要がありますが、一時的な状態(DBには一度も格納されません)のため、ユーザー(HTTP)セッション全体の存続期間があります)およびであり、これは各セッション/ユーザ(ここでは「ユーザ」は画面)に固有です。

DBから永続状態を定期的にリフレッシュしながら、メモリ内の一時的な状態(HTTPセッション内)を維持するために両方の状態を結合する方法必要に応じて、同じクラスを使用し、session.refresh()を実行しますか?両方の状態を異なるクラスに格納し、リンクします。 IDは?デコレータパターン?

答えて

1

わかりません。オブジェクトが読み取り専用の場合、どのような情報が一時的ですか?オブジェクトが読み取り専用の場合は、すべてのセッションで常に同じになります。おそらく、オブジェクトが読み取り専用ではないが、サーバーに永続化されないということでしょうか?

+0

一部のフィールドは永続的で、アプリケーションのこの部分では読み取り専用です。いくつかのものは永続的ではない(過渡的な)ものではなく、ユーザーのセッションにまたがる(常に変化する)状態を表し、セッションごとに異なります。私はそれがより明確であることを望む! –

+0

「一時的な」フィールドが永続的ではなく、セッション固有のフィールドである場合は、ステートフルセッションBean(EJB)の使用を検討する必要があります。このようにして、サーバーは特定のSFSBをクライアントに配信し、セッションが期限切れになる(または閉じられる)ときにクリアすることができます。ここで唯一の "つかみ"は、あなたが同じ事例でこれら2つの情報を持っているようだということです。おそらくあなたが懸念を混ぜているので、これは理想的ではないと主張します。しかし、私はあなたの問題の詳細を知らずにそれを言うことはできません。 – jpkrohling

+0

ありがとう!しかし、私は今EJBに切り替えるつもりはありません:)私の解決策は:HTTPセッションにHibernate POJOを格納することです。これにより、ユーザーのセッション全体で「一時的な」状態が維持されます。次に、永続状態を再読み込みする必要があるときに、私はhibernateのsession.refreshを呼び出します。永続オブジェクトは、休止状態のセッションスコープ内で一意であるだけなので、私は各HTTP要求に対して異なる休止状態セッションを使用するので、同じ永続オブジェクトの複数のインスタンスを持つことができます。私はあなたの答えをupvoteしますが、私は本当にそれを受け入れることはできません申し訳ありません... –

関連する問題