2 lzx longyou lzx_longyou 于 2016.01.31 00:27 提问

Struts2和Hibernate框架整合开发,怎么扩大hibernate的session的生命周期 10C

最近学了Struts2,想和之前学的Hibernate整合在一起,自己做一个项目联系。之前单独用Hibernate框架,为了解决Hibernate懒加载的问题,是使用了OpenSessionInView的方式,即定义一个过滤器,在过滤器中打开session,开启事务。并进行了try..catch..,当发生已成的时候,可以再过滤器进行捕获,然后事务回滚。 但是如今要加上Struts2,Struts2已经有自带的异常处理了,这样子action中出的异常就无法被OpenSessionInView这个filter捕获了,那么事务就无法回滚了。这样子可能导致业务逻辑出错。如果不使用OpenSessionInView,直接在dao中开启session,关闭session。又会出现懒加载的问题。求高手指点该怎么解决。这里没有使用Spring的事务管理。
我目前的想法是自己写一个struts2拦截器,在拦截器中开启事务,处理异常。捕获异常时进行回滚,然后再抛出,让Struts2的异常拦截器处理。有没有其他好的方法?

2个回答

devmiao
devmiao   Ds   Rxr 2016.01.31 06:59
lzx_longyou
lzx_longyou 看了您给的文章,讲得是在Spring下的做法。我现在还没学到Spring,有没有其他好的解决方法。
2 年多之前 回复
Mr_li13
Mr_li13   2016.01.31 10:03

以前解决过这个问题你要我给你。

lzx_longyou
lzx_longyou 好呀,可以发我邮箱吗? 450738470@qq.com, 谢谢
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
spring中延长hibernate中session的生命周期:OpenSessionInViewFilter
在HIBERNATE中,如果我们要访问到某个类的集合属性,那我们一般在类的的映射文件里SET节点启用LAZE=FALSE; 那么在S2SH中怎么解决呢? 1.OpenSessionInViewFilter是Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session, 一直保持这个Session,直到这个请求结束,具体是
Struts2和Hibernate的整合
本文主要讲Struts和Hibernate两种框架的整合,以模仿用户登录为例 第一步:写三个页面(分别为inde.jsp,success.jsp,fail.jsp) index.jsp的主要代码: 用户名: 密 码: success.jsp的主要代码 登录成功,欢迎登录!
Hibernate Session 的生命周期
开通黄钻 Hibernate Session 的生命周期 瞬时对象(Transient Objects):使用new 操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所引用),它们的状态将会丢失,并由垃圾回收机制回收。  持久化对象(Persist Objects):持久实
Spring+Struts2+hibernate+Redis整合
SSH+Redis整合
hibernate懒加载之No session扩大session作用范围
当使用hibernate框架时因为懒加载策略问题,session已经在service时关闭 ,在后面查询关联的内容将出现no session问题 ,这时我们需要将session延迟到页面处理完成后完成。       注意:必须在struts框架之前配置,因为在struts之后就已经将内容处理完成了,不会再经过OpenSessionInViewFilter过滤器。     ope
SSH与SSM学习之SSH整合10——扩大session作用范围
SSH与SSM学习之SSH整合10扩大session作用范围 一session作用问题 二配置filter 三源码下载 SSH与SSM学习之SSH整合10——扩大session作用范围一、session作用问题为了避免使用懒加载时出现no-session问题.需要扩大session的作用范围二、配置filterSpring提供了扩大session作用范围的过滤器 OpenSessionInViewF
解析Spring托管下Hibernate Session的生命周期
一、Session生命周期的影响因素     Hibernate Session的生命周期受到其自身属性和方法的影响,简单的说: SessionFactory的openSession() 方法会开启一个session。 Session的flushMode会决定session何时进行flush。 Session的flush()方法会对session进行强制flush。
Hibernate—Hibernate Session生命周期示例
今天做了一个hibernate关于session的生命周期的测试,用的eclipse的junit工具类。 在昨天入门配置的基础上,创建了一个Sourse folder  名为test,主要放置测试类。   首先解释一下持久化对象: 瞬时对象(Transient Objects):使用new 操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说它们没有任何跟数据库
Hibernate学习——(四)Session及生命周期中的三种状态
Session接口是Hibernate向应用程序提供的操纵数据库的最主要的接口,它提供了基本的保存,更新,删除和加载(不是“查 询”!)Java对象的方法。 Session具有一个缓存,位于缓存中的对象称为持久化对象,它和数据库中的相关记录对应。Session能够在某些时间点按照缓存 中对象的变化来执行相关的SQL语句,来同步更新数据库。站在持久化的角度,Hibernate把对象分为4种状态
SSH三大框架整合 struts2+hibernate+spring (全注解方式进行配置)
SSH三大框架整合 struts2+hibernate+spring (全注解方式进行配置)