2011-08-10 11 views
0

stuts2(mvc層)、spring 3.x(DI、トランザクション境界設定、その他の関連するもの)、Hibernate 3.x(Persistence)を使用してWebアプリケーションを開発中です。Open Session in View代替

このようなまたは類似のプラットフォームを使用している他のWebアプリケーションと同様に、アクションのメインロジックが完了しているため、Hibernateセッションはすでに閉じられており、データベーストランザクションは終了しています例外が発生したときに注意する必要がある問題は次のとおりです。LazyInitializationException:セッションが閉じられました。

あり、この問題を解決するための様々な方法があり、広く受け入れられている解決策の一つは、ビューで オープンセッションであるパターン。 私たちは春を使用しているので、簡単にこれをサポートします。

このパターンには、他の良い代替パターンがありますか?これを私は別の解決策を探しているわけではありませんが、この問題を解決するための他の良い、同等の効率的なアプローチがあります。事前に

おかげ Umesh

答えて

1

OSIVは、常に人々の問題を引き起こしているようです。ここでは私のためによく働いた戦略です:

  1. すべてのHibernateの関連付けがマークされているLAZY
  2. DAOは、メソッドがすべてのブールloadChildrenを取り得ます。はい、子供の団体が特定のリクエストやないために必要とされているかどうかに応じて、get'edエンティティ
  3. の子の関連付けを初期化する場合、コントローラは、サービスやDAO層
  4. [表示] - にTまたはFとしてloadChildrenを渡しますそれらが初期化されているかどうかを気にせずに関連をトラバースする必要があるものがあります。