0

我正在寻找一个与struts2配合良好的hibernate插件,它可以使用hibernate(JPA)查询数据并在jsp中显示它而不会违反诸如hibernate会话关闭之类的情况。

我正在使用最新的 struts2,Hibernate (JPA)。

使用 Hibernate 的 Spring DAO 或 JPA 更好吗?我更喜欢JPA。

将 Full HIbernate Plugin 与最新的 struts2 和 Hibernate 一起使用是否可行?

请帮忙。

谢谢。

4

1 回答 1

0

为了完成这项任务,您不需要完整的休眠插件。您正在寻求实现 Open Session In View 模式。基本上,这个想法是实现一个 servlet 过滤器,它打开一个休眠会话,将控制权传递给过滤器链的其余部分,然后在执行完成后关闭过滤器。以这种方式,您的视图有一个开放的会话可供使用,并最终关闭。但是,需要指出的是,有些人认为这是一种反模式,因为它确实允许您的视图代码通过延迟加载等方式触发大量与数据库相关的操作。这绝对是要记住的事情。

网上有很多例子,通常缩写为 OSIV,这里有一个使用直接休眠的例子,它是我为开源的前雇主编写的。我认为它的原始版本是在 2007 年左右编写的,最近从 SVN 转移到了 GIT:

https://fisheye.5amsolutions.com/browse/5AMCOM/core/src/main/java/com/fiveamsolutions/commons/web/filter/OpenSessionInViewFilter.java?r=78fe9215dcbdea11ed54e7446bf19f779cb13770

他们的开源库的主页包括这里:

https://www.5amsolutions.com/how-we-do-it/5am-commons

如果您想使用完整的 JPA 解决方案,spring 确实在 View 过滤器中包含一个 Open Entity Manager:

http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/orm/jpa/support/OpenEntityManagerInViewFilter.html

自从我多年没有使用 Spring 以来,我没有使用过那个特定的类,但是 Spring 的东西通常效果很好。

关于该主题的最后一个链接是几年前的休眠文档: https ://community.jboss.org/wiki/OpenSessionInView

于 2012-10-03T21:34:23.333 回答