1

我遇到以下问题:

  • 我将 Oracle ADF 用于我的应用程序的视图和控制器。
  • 使用 OpenSessionInViewFilter,我拦截了请求并打开了一个 Hibernate 的 Session,并在 bean 的方法完成后立即关闭它。

我需要的是保持会话打开直到页面被渲染,因为在我的 JSP 中使用我从数据库加载的对象的惰性属性。

例如:

当我输入 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}" />
...

我希望 Hibernate 的 Session 保持打开状态,直到 af:inputText 被处理。

这可能吗?如何?

提前致谢

4

2 回答 2

1

最后,我解决了我的问题。

OpenSessionInViewFilter 它工作正常。

我使用的组件有问题<af:table>......奇怪的是它<af:table>创建了一个新请求。这个新请求正在关闭并创建一个新的 Hibernate Session。

于 2010-06-23T17:31:04.233 回答
0

我建议您将视图与模型分离并消除延迟加载。在呈现之前为页面提供它需要的所有数据。如果获取额外数据确实对性能造成很大影响,那么请考虑重新设计应用程序以单独显示该数据。

于 2010-06-09T13:40:50.603 回答