我正在寻找一个hibernate插件,可以很好地与struts2一起工作,可以使用hibernate (JPA)查询数据,并在jsp中显示它,而不会出现违反情况,如hibernate会话关闭。
我使用的是最新的struts2,Hibernate。
使用Spring DAO和Hibernate中的JPA哪个更好?我更喜欢JPA。
在最新的struts2和Hibernate中使用完整的HIbernate插件可行吗?
请帮帮忙。
谢谢。
发布于 2012-10-04 05:34:23
为了完成这个任务,你不需要一个完整的hibernate插件。您希望实现Open Session In View模式。基本上,其思想是实现一个servlet过滤器,该过滤器打开一个hibernate会话,将控制传递给过滤器链的其余部分,然后在执行完成后关闭过滤器。以这种方式,您的视图有一个打开的会话可用,但它最终会被关闭。然而,应该指出的是,有些人认为这是一种反模式,因为它确实允许视图代码通过延迟加载等方式触发大量与数据库相关的操作。这绝对是需要牢记在心的事情。
网上有很多例子,通常缩写为OSIV,这里有一个例子是我为一个开源的前雇主写的,它使用的是直接hibernate。我认为它的原始版本是在2007年左右编写的,最近从SVN转移到了GIT:
他们的开源库的主页如下:
https://www.5amsolutions.com/how-we-do-it/5am-commons
如果你想使用一个完整的JPA解决方案,spring确实在视图过滤器中包含了一个Open Entity Manager:
http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/orm/jpa/support/OpenEntityManagerInViewFilter.html
自从多年没有使用Spring以来,我就没有使用过这个特定的类,但是Spring的东西通常工作得很好。
关于这个主题的最后一个链接是几年前的hibernate文档:https://community.jboss.org/wiki/OpenSessionInView
https://stackoverflow.com/questions/12701999
复制相似问题