如何保持 Hibernate 会话打开直到页面呈现

发布于 2024-09-04 21:29:22 字数 659 浏览 6 评论 0原文

我遇到以下问题:

  • 我正在使用 Oracle ADF 作为应用程序的视图和控制器。
  • 使用 OpenSessionInViewFilter,我拦截请求并打开 Hibernate 的会话,并在 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 的会话保持打开状态,直到处理完af:inputText。

这可能吗?如何?

提前致谢

I'm having the following problem:

  • I'm using Oracle ADF for the view and controller of my app.
  • With OpenSessionInViewFilter, I intercept the request and open an Hibernate's Session, and it is closed as soon as the bean's method finishes.

What I need is to keep the Session opened until the page is rendered, because in my JSP y use the lazy attributes of the object i load from the DB.

For example:

When I enter index.jspx the IndexBean#main() is executed:

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

in index.jspx I have:

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

I'd like that the Hibernate's Session keeps open until the af:inputText is processed.

Is this possible? How?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

东北女汉子 2024-09-11 21:29:22

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

OpenSessionInViewFilter 工作正常。

我使用的 组件出现问题...奇怪的是 创建了一个新请求。这个新请求正在关闭并创建一个新的 Hibernate 会话。

Finally, I solved my problem.

The OpenSessionInViewFilter it was working right.

There was a problem with the <af:table> component I was using... The weird thing was that the <af:table> creates a new request. This new request was closing and creating a new Hibernate Session.

2024-09-11 21:29:22

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

I'd suggest you keep your view decoupled from your model and eliminate the lazy loading. Give the page all the data it needs before it gets rendered. If fetching the additional data is really a big performance hit, then consider re-designing the app to present that data separately.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文