0 0

spring mvc OpenSessionInViewFilter hibernate 懒加载问题0

之前做了一个项目是使用 springmvc 加hibernate 做的, 并且使用了 hibernate 的懒加载有用到OpenSessionInViewFilter, 现在做另一个项目, 基础代码都是上个项目的代码;

目前调试在调试权限模块, 核对了上个项目的代码基本完全一致,但是这个项目的老是无法使用懒加载,加载报 org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.user.role.Role.menuRole, no session or session was closed, 和上个项目真的完全一致了, 包括事务都看过没问题,
下面是两个项目的log4j 日志, 是不一样的

-- 上个项目的日志
[DEBUG] [http-8088-2] org.hibernate.jdbc.AbstractBatcher - about to open ResultSet (open ResultSets: 0, globally: 0)
[DEBUG] [http-8088-2] org.hibernate.loader.Loader - result row: EntityKey[com.zmis.model.user.privilege.Role#297e26b04859021c01485902252d0004]
[DEBUG] [http-8088-2] org.hibernate.jdbc.AbstractBatcher - about to close ResultSet (open ResultSets: 1, globally: 1)
[DEBUG] [http-8088-2] org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[DEBUG] [http-8088-2] org.hibernate.engine.TwoPhaseLoad - resolving associations for [com.zmis.model.user.privilege.Role#297e26b04859021c01485902252d0004]
[DEBUG] [http-8088-2] org.hibernate.engine.TwoPhaseLoad - done materializing entity [com.zmis.model.user.privilege.Role#297e26b04859021c01485902252d0004]
[DEBUG] [http-8088-2] org.hibernate.engine.StatefulPersistenceContext - initializing non-lazy collections
[DEBUG] [http-8088-2] org.hibernate.loader.Loader - done entity load
[DEBUG] [http-8088-2] org.springframework.orm.hibernate3.HibernateTemplate - Not closing pre-bound Hibernate Session after HibernateTemplate

--- 现在这个项目的日志
[DEBUG] [http-8088-1] org.hibernate.jdbc.AbstractBatcher - about to open ResultSet (open ResultSets: 0, globally: 0)
[DEBUG] [http-8088-1] org.hibernate.loader.Loader - result row: EntityKey[com.zmis.model.user.role.Role#297e26b049520e6d0149520e746a000b]
[DEBUG] [http-8088-1] org.hibernate.jdbc.AbstractBatcher - about to close ResultSet (open ResultSets: 1, globally: 1)
[DEBUG] [http-8088-1] org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[DEBUG] [http-8088-1] org.hibernate.engine.TwoPhaseLoad - resolving associations for [com.zmis.model.user.role.Role#297e26b049520e6d0149520e746a000b]
[DEBUG] [http-8088-1] org.hibernate.engine.TwoPhaseLoad - done materializing entity [com.zmis.model.user.role.Role#297e26b049520e6d0149520e746a000b]
[DEBUG] [http-8088-1] org.hibernate.engine.StatefulPersistenceContext - initializing non-lazy collections
[DEBUG] [http-8088-1] org.hibernate.loader.Loader - done entity load
[DEBUG] [http-8088-1] org.springframework.orm.hibernate3.HibernateTemplate - Eagerly flushing Hibernate session
[DEBUG] [http-8088-1] org.hibernate.event.def.AbstractFlushingEventListener - processing flush-time cascades
[DEBUG] [http-8088-1] org.hibernate.event.def.AbstractFlushingEventListener - dirty checking collections
[DEBUG] [http-8088-1] org.hibernate.engine.Collections - Collection found: [com.zmis.model.user.role.Role.menuRole#297e26b049520e6d0149520e746a000b], was: com.zmis.model.user.role.Role.menuRole#297e26b049520e6d0149520e746a000b
[DEBUG] [http-8088-1] org.hibernate.engine.Collections - Collection found: [com.zmis.model.user.role.Role.usersRole#297e26b049520e6d0149520e746a000b], was: com.zmis.model.user.role.Role.usersRole#297e26b049520e6d0149520e746a000b
[DEBUG] [http-8088-1] org.hibernate.event.def.AbstractFlushingEventListener - Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
[DEBUG] [http-8088-1] org.hibernate.event.def.AbstractFlushingEventListener - Flushed: 0 (re)creations, 0 updates, 0 removals to 2 collections
[DEBUG] [http-8088-1] org.hibernate.pretty.Printer - listing entities:
[DEBUG] [http-8088-1] org.hibernate.pretty.Printer - com.zmis.model.user.role.Role{fid=297e26b049520e6d0149520e746a000b, inputDate=2014-10-27 22:41:59, roleKey=manager, px=null, usersRole=, remark=null, menuRole=, delete=false, active=true, roleName=管理员}
[DEBUG] [http-8088-1] org.springframework.orm.hibernate3.SessionFactoryUtils - Closing Hibernate Session
[DEBUG] [http-8088-1] org.hibernate.jdbc.ConnectionManager - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
[DEBUG] [http-8088-1] org.hibernate.jdbc.ConnectionManager - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!
2014年10月28日 23:43
  • 大小: 87.8 KB

1个答案 按时间排序 按投票排序

0 0

直接看错误 ,你看不懂吗  你在延迟加载Role和menuRole的时候,session已经关闭了,看看你的代码是不是没有放在session有效期里

2014年11月18日 11:09

相关推荐

    spring3和hibernate4整合的lib库

    其核心特性包括对象-关系映射、懒加载、级联操作、事务支持等。 将Spring3与Hibernate4整合,主要是通过Spring的声明式事务管理和数据源配置,实现对Hibernate的透明管理。以下是一些整合的关键步骤: 1. **配置...

    struts2.3+spring3.1.2+hibernate4.1.6 配置说明

    这个过滤器确保在每次HTTP请求中,都会有一个打开的Hibernate Session,以解决“懒加载”问题。配置中包含了`sessionFactoryBeanName`、`singleSession`和`flushMode`等参数,用于指定SessionFactory的bean名称、...

    spring_demo:Spring MVC示范项目

    Spring MVC Hibernate Demo Hibernate 配置 数据库实体必须设置以下注解 @Entity @Id 自增主键必须设置以下注解,否则报错 @GeneratedValue(strategy = GenerationType.IDENTITY) 在更新或删除数据时,必须调用...

    Struts,Spring与hibernate集成

    10. **处理Hibernate延迟加载问题**:为了解决由于Session生命周期和HTTP请求生命周期不匹配导致的延迟加载问题,可以使用OpenSessionInViewFilter。这个过滤器确保Session在请求结束时才关闭,从而能正确处理延迟...

    struts2.1+spring3.0+hibernate3.3整合

    在Java Web开发中,Struts2、Spring与Hibernate是三个非常重要的框架,它们分别用于处理MVC架构中的表示层、业务逻辑层与数据访问层。本文将详细介绍如何在项目中集成这三大框架,并实现反向表结构。 #### 二、为...

    jar包(struts2.0.8+spring2.0+hibernate3.2)

    Struts2、Spring和Hibernate是Java开发中三个非常重要的框架,它们共同构成了经典的MVC(Model-View-Controller)架构的实现。这个压缩包“struts2.0.8+spring2.0+hibernate3.2”包含了这三个框架的特定版本,这将...

    Struts+Hibernate+Spring的基本流程

    Struts+Hibernate+Spring(SSH)整合是Java Web开发中常见的技术栈,它结合了三个强大的框架,分别负责MVC架构、对象关系映射(ORM)以及依赖注入和AOP(面向切面编程)。SSH整合使得开发过程更加高效且易于维护。 ...

    struts2 spring hibernate整合要点、注意点

    <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter <filter-name>openSessionInViewFilter *.action <!-- Struts2核心过滤器 --> <filter-name>struts2 ...

    spring管理struts和hibernate

    ### Spring管理Struts与Hibernate详解 #### 一、Spring整合Struts 在Web开发中,Struts是一个基于MVC设计模式的开源框架,它能够帮助开发者构建可维护性高、结构清晰的应用系统。Spring框架则提供了强大的依赖注入...

    Struts+Hibernate+Spring的整合方法

    8. **处理Hibernate延迟加载**:使用`OpenSessionInViewFilter`过滤器,确保Session在整个HTTP请求期间保持打开状态,解决懒加载问题。配置过滤器映射到所有.do请求。 9. **处理只读模式异常**:由于...

    struts+spring+hibernate全面整合

    Struts、Spring 和 Hibernate 是三个著名的 Java 开发框架,它们分别负责不同的职责:Struts 主要处理 MVC(Model-View-Controller)架构中的控制层,Spring 提供了强大的依赖注入和事务管理,而 Hibernate 则是 ORM...

    struts_hibernate_spring集成

    - **OpenSessionInViewFilter**:此过滤器确保在视图渲染过程中保持一个打开的Hibernate Session,这对于事务管理和延迟加载特别有用。 #### 2. struts-config.xml的配置调整 在Struts配置文件中,为了与Spring...

    Hibernate事务管理.

    在没有Spring提供的Open Session In View(OSIV)模式下,事务处理和懒加载(lazy loading)可能会遇到挑战。 懒加载是一种优化策略,允许关联对象在需要时才从数据库加载,而不是在初始加载实体时就全部加载。这...

    spring+struts+hibernate的配置文档

    ### Spring + Struts + ...Spring 负责 Bean 的管理和依赖注入,Struts 提供 MVC 的支持,而 Hibernate 则简化了数据访问层的开发。这些配置文件不仅展示了 SSH 架构的工作原理,还体现了框架间的高度集成性和灵活性。

    Struts2+Spring+Hibernate搭建全解

    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <filter-name>openSessionInViewFilter <url-pattern>/* ``` 5. **运行测试** - **部署项目**:将项目部署到...

    Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00

    为了提高性能,通常会在Spring中使用`OpenSessionInViewFilter`来管理Hibernate的Session。这样可以在整个请求周期内保持Session打开状态,从而避免多次打开和关闭Session带来的性能损失。 ```xml <filter-name>...

    struts-hibernate-sprint开发详解 乱码问题 连接池

    同时,配置`OpenSessionInViewFilter`(懒加载过滤器)以处理Hibernate的懒加载问题。接着,配置Struts2的FilterDispatcher,确保所有请求都被Struts2拦截和处理。 最后,`applicationContext.xml`是Spring的核心...

    struts2+hibernate+spring

    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <!-- ExtremeTable Excel/PDF 导出过滤器 --> <filter-name>eXtremeExport <filter-class>org.extremecomponents....

    将_Shiro_作为应用的权限基础_五:SpringMVC+Apache_Shiro+JPA(hibernate)整合配置

    这是Spring针对Hibernate的非JPA实现使用的`OpenSessionInViewFilter`的JPA版本。 #### 2. applicationContext.xml配置详解 `applicationContext.xml`是Spring的基本配置文件之一,主要用于配置数据源、JPA实体...

    JavaEE程序员简历最新版

    - **临潼德荥纸业有限公司客户管理系统**:这个项目中,黄先生使用了Struts2+Spring+Hibernate,涉及到客户资源管理、服务跟踪等模块,他采用了懒加载优化和Spring的OpenSessionInViewFilter来解决懒加载问题。...

Global site tag (gtag.js) - Google Analytics