Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题

最近在知乎看到一句话,保持学习的有一种是你看到了更多的牛人,不甘心,真的不甘心。

Spring和hibernate整合的时候,jsp页面做展现,发现展现属性出现:

org.apache.jasper.JasperException: could not initialize proxy - no Session - Class: org.hibernate.proxy.AbstractLazyInitializer

File: AbstractLazyInitializer.java

no session,懒加载,加入jsp页面展现的name这样的一个属性,其实是用getName这样的方法去拿到的,但是session已经关闭了。

解决的办法就是就是写多一个filter,名字也很直观

<filter>
     <filter-name >openSessionInview </filter-name>
     <filter-class >org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class>

</filter >
<filter-mapping >
          <filter-name> openSessionInview</filter-name >
          <url-pattern> /*</ url-pattern>
</filter-mapping >

在展现层打开session,当然要写在struts的过滤之前,因为责任链的存在,先读取的反而是后实现的。

就在觉得配完之后没问题的时候,有一个问题出现了,发现sessionFactory没有注入,因为我sessionFactory的id给我简写成sf,然后就猜到,应该是OpenSessionInViewFilter这个类需要注入sessionFactory,该类也有get方法,但是名字不匹配,所以注入失败。

后面尝试用

<bean id="openSessionInview" class="org.springframework.orm.hibernate3.support.OpenSessionInViewFilter ">
          <property name="sessionFactory" ref="sf"></property>
</bean>

当然不行,后面查了一下。正确的配置是在web.xml中初始化。

<filter>
     <filter-name >openSessionInview </filter-name>
     <filter-class >org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class>
     <init-param >
           <param-name> sessionFactoryBeanName</param-name >
          <param-value> sf</param-value >
     </init-param >
</filter >
<filter-mapping >
          <filter-name> openSessionInview</filter-name >
          <url-pattern> /*</ url-pattern>
</filter-mapping >

最后,成功地在jsp页面展现了name属性。

Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题

时间: 2024-10-10 10:00:03

Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题的相关文章

hibernateTemplate不建议在Spring与Hibernate整合中使用

HibernateTemplate类属于spring框架中的类 :org.springframework.orm.hibernate3.HibernateTemplate HibernateTemplate类目前Hibernate4不支持此类,只支持到Hibernate3,而且在SH整合过程中,如果DaoImpl采用Hibernate实现方法,如果采用Hibernate原声的SessionFactory,即使不采用Spring,原声的SessionFaction同样可以使用,将有利于Dao是可以

Spring与Hibernate整合

Spring与Hibernate整合 Spring与Hibernate整合关键点: 1) Hibernate的SessionFactory对象交给Spring创建:   SessionFactory即是hibernate.cfg.xml配置文件 2) hibernate事务交给spring的声明式事务管理. SSH整合: Spring与Struts: Spring与hibernate整合: SH整合步骤: 1)引入jar包 连接池/数据库驱动包   spring对c3p0连接池的支持比hiber

spring与hibernate整合(三种方式)

Spring与Hibernate整合关键点: 1) Hibernate的SessionFactory对象交给Spring创建: 2) hibernate事务交给spring的声明式事务管理. SSH整合: Spring与Struts: Spring与hibernate整合: SH整合步骤: 1)引入jar包 连接池/数据库驱动包 Hibernate相关jar Spring核心包(5个) Springaop 包(4个) spring-orm-3.2.5.RELEASE.jar           

轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)

轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Java EE经典著作) 李刚 编著   ISBN 978-7-121-24253-3 2014年10月出版 定价:108.00元 824页 16开 编辑推荐 国内知名IT图书作家李刚老师基于曾荣获中国书刊发行业协会“年度全行业优秀畅销品种”大奖的<轻量级Java EE企业应用实战(第3版)>全新升级:

spring和hibernate整合时报sessionFactory无法获取默认Bean Validation factory

Hibernate 3.6以上版本在用junit测试时会提示错误: Unable to get the default Bean Validation factory spring和hibernate整合时报sessionFactory无法获取默认Bean Validation factory  ,是因为新版hibernate用到新的jar包造成的,默认会自动找验证包,吴国不需要这一步,可以在spring整合hibernate的配置节点中添加如下标红属性: <bean id="sessio

SSH(Spring+Struts2+Hibernate)整合

本博文介绍目前较流行的三大(Spring+Struts2+Hibernate)框架的整合. 一般整合需要以下几个步骤: 1.首先导入相应的jar包 Spring所需的jar包如下图: Struts所需的jar包如下图: hibernate所需的jar包如下图: 一些共同所需的jar包如下图: 其中mysql-connector-java-5.1.33-bin.jar是连接mysql数据库所需的jar包. 将上述的jar包拷贝到项目的lib目录下. 2.spring和struts整合 只需要Str

SpringMVC与Spring、Hibernate整合

本文采用正向工程1.搭建工程        工程名称:mvcsh2.添加支持的jar包        1).spring-3.2.0.jar 注:struts相关的jar不需要 \libs\*.jar com.springsource.org.aopalliance-1.0.0.jar            com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar            commons-logging.jar        2).

Spring mvc 源码 和 Spring+springmvc+hibernate整合源码

本来想着再写下spring+springmvc+hibernate整合的文章 暂时就不写了 直接附上源码,有需要的直接下载看吧.还有前面文章中的springmvc源码  前面文章只是简单的说了下 搭建环境 访问页面成功.这个源码中有模拟的增删改查和文件上传,转换json 实体类验证等功能.有问题可以留言我. http://download.csdn.net/detail/qinyanbin123/8631175 springmvc源码下载地址 http://download.csdn.net/d

Spring与Hibernate整合,实现Hibernate事务管理

1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar                 [spring对hibernate的支持] spring-tx-3.2.5.RELEASE.jar                     [事务相关] 2.配置文件 Product.hbm.xml <?xml version="1.0" encoding=