今天在用Hibernate延迟加载时,显示到界面出现如下问题:
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
原因: 在界面加载数据时, session已经关闭,故报此错. 此前的对象只是代理对象(只有ID值)
故使用Spring 里的 OpenSessionInViewFilter 来解决此问题
在web.xml里配置
<!--Hibernate Open Session in View Filter-->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
再测试, 问题依然存在,,, 纳闷....... 后来分析,再google... 终于发现问题出在Struts2上....
现在的web.xml里,我是把OpenSessionInViewFilter的配置放在Struts2后面的.
我更改下前后顺序, 神奇的解决了:) 正确的配置顺序如下:
<!--Hibernate Open Session in View Filter 注意要放在Struts2配置前面-->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
OpenSessionInViewFilter是Spring框架中一个非常重要的组件,主要用于解决数据访问层(DAO)与视图层(View)之间的事务管理问题。在Web应用中,由于HTTP请求的无状态性,一次请求通常由多个Servlet过滤器、控制器和...
OpenSessionInViewFilter个人学习总结
在`web.xml`中,`OpenSessionInViewFilter`是一个用于解决懒加载异常的关键配置,它确保在用户请求的整个生命周期内,Hibernate Session保持打开状态。`sessionFactoryBeanName`参数关联到Spring配置中的...
2. **Hibernate配置**:使用`OpenSessionInViewFilter`过滤器,该过滤器使得Hibernate在HTTP请求的生命周期内保持一个数据库会话,解决了懒加载(Lazy Loading)时可能出现的错误。`hibernateFilter`将这个过滤器...
在web.xml中,可以配置`OpenSessionInViewFilter`来解决懒加载问题,保持一个Session贯穿整个请求过程。 3. **Spring** - 提供依赖注入和管理服务,可以将Action和DAO注入到DWR的配置中。同时,Spring也负责配置...
SSH 框架 Ajax 获取的 JSON 格式数据处理过程 在本文中,我们将详细讲解如何使用 SSH 框架中的 Ajax 获取的 JSON 格式数据处理过程,并且实现菜单联动下拉框的功能。 一、Ajax 中 response 返回的数据是一个二维...
- 添加OpenSessionInViewFilter,解决在视图层处理时可能出现的懒加载异常。 10. **编写Action类**: - 创建Action类,它们通常对应于特定的业务操作,如增、删、改、查。 11. **更新struts.xml**: - 在`...
SSH框架是指Struts2、Spring、Hibernate这三种技术的组合,常被用于Java Web开发中。全注解配置相较于XML配置更加简洁,易于维护,因此在现代Web项目开发中越来越受到青睐。本文将详细介绍如何搭建一个基于全注解...
SSH整合是指将Spring、Hibernate和Struts2这三大开源框架集成在一起,用于构建高效、模块化的Java Web应用程序。这些框架分别负责不同的职责:Spring作为IoC(Inversion of Control)容器,提供依赖注入和AOP(面向...
SSH框架是Java Web开发领域内非常流行的一种组合框架,分别由Struts2、Spring和Hibernate三个技术组成。其中Struts2负责处理Web层逻辑;Spring则主要作为业务逻辑层的容器;Hibernate则承担了持久化层的角色。本文将...
SSH整合是Java开发中一种常见的框架集成方式,主要包括Spring、Struts2和Hibernate三个部分。这些框架的结合能够提供一个强大的、松耦合的MVC(Model-View-Controller)架构,便于开发复杂的Web应用程序。 **Spring...
- `OpenSessionInViewFilter` 是Spring提供的一个过滤器,用于解决数据访问层(DAO)在Web请求结束时无法关闭Session的问题,防止出现Session过早关闭导致的事务问题。`sessionFactoryBeanName`参数指定了...
- 另外,为了在每个HTTP请求处理完后关闭Session,可以在`web.xml`中配置`OpenSessionInViewFilter`,避免Session失效问题。 6. **事务管理**: - 配置Spring的事务管理器,例如`HibernateTransactionManager`,...
SSH分别代表Struts2(一个MVC框架)、Hibernate(一个对象关系映射框架)和Spring(一个全面的企业级应用框架)。Flex是Adobe开发的富互联网应用程序(RIA)框架,主要用于创建动态、交互式的用户界面。 在SSH+Flex...
OpenSessionInView(OSIV)模式是SSH整合中常见的一种优化策略,它在用户的一次HTTP请求过程中保持Hibernate Session,避免了多次打开和关闭Session,减少了N+1查询问题,提高了性能。 **Spring** 是一个全面的企业...
这三个框架各自解决不同的问题:Spring主要负责业务逻辑层的管理与控制;Struts则侧重于MVC模式中的控制器部分,用于处理用户的请求;而Hibernate则是对象关系映射工具,用来简化数据库操作。本文将详细介绍如何在...