1

次の問題があります。

  • アプリのビューとコントローラーに Oracle ADF を使用しています。
  • OpenSessionInViewFilter を使用して、リクエストをインターセプトして Hibernate のセッションを開き、Bean のメソッドが終了するとすぐにセッションを閉じます。

私が必要とするのは、ページがレンダリングされるまでセッションを開いたままにすることです。これは、私の JSP では、DB からロードしたオブジェクトの遅延属性を使用するためです。

例えば:

index.jspx に入ると、 IndexBean#main() が実行されます。

public class IndexBean{
    private DBObject myDBObject;
    public String main(){
        this.myDBObject = this.myDAO.loadObjectFromDB();
        return null;
    }
}

index.jspx には次のものがあります。

...
<af:inputText value="#{myDBObject.lazyAttribute}" />
...

af:inputText が処理されるまで、Hibernate のセッションを開いたままにしておいてください。

これは可能ですか?どのように?

前もって感謝します

4

2 に答える 2

1

最後に、私は私の問題を解決しました。

OpenSessionInViewFilter は正しく機能していました。

使用していたコンポーネントに問題がありました<af:table>...奇妙なことに<af:table>、新しいリクエストが作成されました。この新しいリクエストは、新しい Hibernate セッションを閉じて作成していました。

于 2010-06-23T17:31:04.233 に答える
0

ビューをモデルから切り離し、遅延読み込みを排除することをお勧めします。ページがレンダリングされる前に、必要なすべてのデータをページに提供します。追加データのフェッチが実際に大きなパフォーマンス ヒットになる場合は、そのデータを個別に表示するようにアプリを再設計することを検討してください。

于 2010-06-09T13:40:50.603 に答える