首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Struts-1应用程序中管理Hibernate会话的最佳方法是什么?

在Struts-1应用程序中管理Hibernate会话的最佳方法是什么?
EN

Software Engineering用户
提问于 2011-06-13 14:20:29
回答 1查看 3.8K关注 0票数 3

我现在是Struts-1应用程序的所有者,Hibernate会话管理无处不在。我已经搜索了在线文档,但没有找到管理Struts应用程序中Hibernate会话的最佳方法的明确解释。应该在每个操作开始时创建(或获取) Hibernate会话,并打开一个事务,然后在操作结束时提交或回滚事务。对吗?如何在不重复每个操作中的代码的情况下对所有操作进行管理?每个Action应该从DB中获取对象,调用模型函数,然后保存对象吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2011-06-13 14:41:23

我不认为struts 1附带了OpenSessionInView过滤器,但是管理会话的一种方法是根据每个请求打开会话,然后通过线程本地模式访问会话。

这将使会话保持打开状态,直到请求完成呈现,这意味着您可以在视图中安全地使用延迟实例化的集合。

Spring附带了一个开放视野过滤器( 这是一篇关于如何使用它的文章 ),或者,将自己的过滤器编写为标准servlet过滤器相对简单。

要编写自己的代码,需要编写实现过滤器的ServletFilter,并实现doFilter方法。它看起来应该是:

代码语言:javascript
复制
void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) {
   Session session;
   try {
      session = // get my hibernate session here
      // do the request
      chain.doFilter(req, res);
   } catch (Whatever) {
   } finally {
     // close my session here
   }

您需要在web.xml中注册此筛选器,并将其应用于您需要会话的URL。这不是世界上最优雅的解决方案,但它确实工作得很好。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/83545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档