Spring的OpenSessionInViewFilter和OpenSessionInViewInterceptor

xml 代码

  对Hibernate的懒加载问题,Spring提供了OpenSessionInViewFilter和OpenSessionInViewInterceptor两种东西。

 

  对OpenSessionInViewFilter,需要在web.xml文件中配置。

xml 代码
  1. <filter>  
  2.   <description>处理Hibernate的懒加载问题description>  
  3.   <filter-name>OpenSessionInViewFilterfilter-name>  
  4.   <filter-class>  
  5.     org.springframework.orm.hibernate3.support.OpenSessionInViewFilter   
  6.   filter-class>  
  7.   <init-param>  
  8.     <description>  
  9.        默认情况下,这个Filter会在Spring的bean池中找一个叫做sessionFactory的bean。如果使用了其他名字的SessionFactory,则应该在这里   
  10.        指定这个名字。   
  11.     description>  
  12.     <param-name>sessionFactoryBeanNameparam-name>  
  13.     <param-value>localSessionFactoryparam-value>  
  14.   init-param>  
  15.   <init-param>  
  16.     <description>description>  
  17.     <param-name>singleSessionparam-name>  
  18.     <param-value>trueparam-value>  
  19.   init-param>  
  20. filter>  
  21. <filter-mapping>  
  22.   <filter-name>OpenSessionInViewFilterfilter-name>  
  23.   <url-pattern>*.dourl-pattern>  
  24. filter-mapping>  


         默认情况下,这个Filter会在Spring的bean池中找一个叫做sessionFactory的bean。如果使用了其他名字的SessionFactory,则应该在这里指定这个名字。

xml 代码
  1. <init-param>  
  2.   <description>  
  3.      默认情况下,这个Filter会在Spring的bean池中找一个叫做sessionFactory的bean。如果使用了其他名字的SessionFactory,则应该在这里   
  4.      指定这个名字。   
  5.   </description>  
  6.   <param-name>sessionFactoryBeanName</param-name>  
  7.   <param-value>localSessionFactory</param-value>  
  8. </init-param>  

    其中的sessionFactoryBeanName是你的SessionFactory的实例的名字。这个名字是你在Spring的Bean定义文件中声明的SessionFactory的实例的bean名字。默认这个Filter会使用“sessionFactory”这个值,如果你的SessionFactory确实是这个名字的话,可以不用指明它的名字。但是如果你向我一样,给SessionFactory使用了其他名字,就得在这里声明了。

对OpenSessionInViewInterceptor,就纯粹是Spring IOC容器管理的东西了。

    首先,你需要在Spring中声明一个OpenSessionInViewInterceptor的实例

xml 代码
  1. <bean id="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">  
  2.   <property name="sessionFactory" ref="localSessionFactory" />  
  3. </bean>  

    然后,你需要在bean urlMapping 中使用这个interceptor:

java 代码
  1. <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">   
  2.   <property name="interceptors">   
  3.     <list>   
  4.       <ref bean="openSessionInViewInterceptor" />   
  5.     </list>   
  6.   </property>   
  7.   <property name="mappings">   
  8.     <props>   
  9.       <prop key="main.do">mainFrameController</prop>   
  10.     </props>   
  11.   </property>   
  12. </bean>  

 

    在实际应用中,发现一个奇怪的现象,就是使用OpenSessionInViewFilter以后,发现竟然有时候懒加载会出错,因为时间紧迫,还没有找到原因是什么。但是在使用了OpenSessionInViewInterceptor以后,这个问题解决了。

    有空的时候再来看到底是什么原因。

Keil AC6编译器独立安装与配置指南:不升级Keil MDK也能用上新工具链 本文详细介绍了如何在不升级Keil MDK的情况下独立安装和配置Arm Compiler 6(AC6),帮助嵌入式开发者充分利用AC6的编译速度、代码密度和现代语言支持优势。通过零侵入式解决方案,开发者可以在现有环境中灵活切换编译器版本,提升开发效率。 阅读详情

相关推荐

别再迷信Intel网卡了!用普通笔记本+TWINCAT3搭建EtherCAT主站的完整避坑实录

本文详细介绍了如何用普通笔记本和TWINCAT3搭建EtherCAT主站的完整避坑指南。通过破除必须使用Intel网卡的迷思,提供软件环境搭建、关键配置步骤、Wireshark抓包技巧及性能优化建议,帮助开发者低成本实现EtherCAT主站功能。

weixin_29305337的博客 704

过滤器(opensessioninviewfilter)与拦截器(opensessioninviewinterceptor)的区别?

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符 拦截器,是在面向切面编程的就是

u013456370的专栏 1321

开源Agent Skill让AI画图不再翻车:从数据到专业图表全流程

在人工智能与数据可视化交叉领域,让模型直接生成图表往往伴随字体乱码、坐标轴密集、配色失调等高频问题。Agent Skill作为一种可复用的能力封装机制,将专业绘图流程固化为标准化操作手册,从数据特征识别、图表类型决策到代码生成与渲染校验形成完整闭环。它不再依赖临时提示词的一次性发挥,而是让AI按领域专家的思维执行任务,显著提升出图质量与稳定性。这种能力在数据分析报告、运营日报、论文插图等场景具有广泛实用价值,尤其适用于需要快速产出规范化图表的工作流。本文即从这一技术范式出发,介绍一个GitHub上获得2.5

weixin_33851429的博客 949

延时加载问题解决OpenSessionInViewInterceptor 和 OpenSessionInViewFilter的配置

在没有使用Spring提供的Open Session In View情况下,因需要在service(or Dao)层里把session关闭,所以lazy loading 为true的话,要在应用层内把关系集合都初始化,如 company.getEmployees(),否则Hibernate抛session already closed Exception;    Open Session I

zhouxi19880701的专栏 2591

TensorFlow实战:5步搞定因果推断模型TARNet(附完整代码)

本文提供了一份基于TensorFlow的TARNet因果推断模型实战指南。通过五个清晰步骤,从数据预处理、模型构建到训练评估,详细讲解了如何利用深度模型解决营销评估、疗效分析等场景中的因果效应估计问题,并附有完整代码解决样本不平衡等工程挑战。

python9snake的博客 416

transformer优化(一)-UNeXt 学习笔记

​它在早期阶段使用卷积,在潜在空间阶段使用 MLP。通过一个标记化的 MLP 块来标记和投影卷积特征,并使用 MLP 对表示进行建模。 ​

PLANTTHESON的博客 2033

springboot配置interceptor,并且实现权限登录

配置interceptor不和filter一样,一个@component 和一个@WebFilter注解就配置成功的 interceptor package com.van.mall.controller.common.interceptor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.Han...

weixin_44841849的博客 2977

从BSCAN到BAP:深度解析Tessent MBIST逻辑的协同工作机制与设计考量

本文深入解析了Tessent MBIST逻辑中BSCAN Interface、Logic Group Def、Controller与BAP模块的协同工作机制。文章以一条测试指令的完整路径为例,详细阐述了数据流与控制流如何跨模块、跨时钟域协同工作,并重点探讨了MBIST BAP在协议转换与流量管理中的核心桥梁作用,为芯片内建自测试的集成与调试提供了关键的设计考量和实战技巧。

kappa的博客 482

OpenSessionInViewFilter 的配置及替代方案

Spring 为我们提供了一个叫做 OpenSessionInViewFilter 的过滤器,他是标准的 Servlet Filter 所以我们把它按照规范配置到 web.xml 中方可使用。使用中我们必须配合使用 Spring 的 HibernateDaoSupport 来进行开发,也就是说,我们的dao层的类都要继承于 HibernateDaoSupport,从中由 Spring 来控制 Hi...

不积跬步 无以至千里 不积小流 无以成江海 467

手把手教你学Simulink--四翼无人机滑模控制器设计与仿真

四翼无人机(Quadcopter)滑模控制(Sliding Mode Control, SMC)是一种鲁棒性很强的非线性控制方法,特别适用于存在模型不确定性和外部扰动的情况。滑模控制器通过强制系统状态进入并保持在一个预定义的滑模面上,从而实现对期望轨迹或姿态的精确跟踪。在这个教程中,我们将使用MATLAB和Simulink来设计并仿真一个基于滑模控制策略的四翼无人机系统。

MHD0815的博客 184

Microsemi Libero系列教程(一)——Libero开发环境介绍、下载、安装与注册

前言 相比与Xilinx和Altera在国内的市场,Microsemi的FPGA在国内应用很少很少,网上几乎没有详细的教程,刚开始使用时,遇到了各种问题,自己也走了不少弯路。本系列教程以Libero V11.8.2.4,SmartFusion系列A2F200M3F FPGA芯片为例,将详细介绍Libero SoC软件的基本使用,及使用过程中遇到一些问题的解决方法。 Libero 简介 关于Lib...

whik1194的博客 3万+

spring中对heibernate OpenSessionInView的配置

spring中对heibernate OpenSessionInView的配置 一、作用      说明一下Open Session in View的作用,就是允许在每次的整个request的过程中使用同一个hibernate session,可以在这个request任何时期lazy loading数据。如果是singleSession=false的话,就不会在每次的整个request的过程中...

damo的博客 361

AI幻觉缓解的成本效益分析:投入产出比优化

在当今AI技术飞速发展的时代,AI幻觉成为了一个不容忽视的问题。AI幻觉就像是AI在“做梦”,会给出一些不符合实际或者错误的答案。我们这篇文章的目的就是要分析缓解AI幻觉所需要投入的成本和能够获得的效益,看看怎么能让投入和产出的比例达到最优。范围涵盖了常见的AI应用场景,比如智能客服、自动驾驶等领域。接下来,我们会先介绍一些和AI幻觉、成本效益分析相关的术语。然后用一个有趣的故事引出核心概念,解释什么是AI幻觉、成本效益分析等,以及它们之间的关系。

AI 原生应用开发的博客 935

spring OpenSessionInViewFilter opensessioninviewinterceptor

最近在参照项目实例学习Hibernate,Spring. 看到web.xml 当中都使用了OpenSessionInViewFilter,但是读书当中可能读了就很快过去了,没有留下印象,再google一下,查阅资料。网络上资料是如下解释这个filter的。 如果你的应用中hibernate是通过spring 来管理它的session,如果在你的应用中没有使用opensessioninviewfi

xwygn的专栏 1741

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

OpenSessionInViewFilter与OpenSessionInViewInterceptor控制spring事务

转载地址:http://hi.baidu.com/accpandsvse/item/2f23543e4c027e302e20c4a5

yongzhian的专栏 755

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spring配置之OpenSessionInViewFilter和OpenSessionInViewInterceptor

主要涉及类: org.springframework.orm.hibernate3.support.OpenSessionInViewFilter org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor 一、作用     说明一下Open Session in View的作用,就是允许在每次的整个reque...

Java俱乐部 261

OpenSessionInViewFilter与OpenSessionInViewInterceptor

原文地址:http://www.cnblogs.com/90zyh/archive/2013/05/30/3109253.html 在没有使用Spring提供的Open Session In View情况下,事务提交时会在service(or Dao)层里把session关闭,在lazy loading 为true的话,这样就只能使用get()方法,若使用load()方法,Hibernate

refire 592

Spring配置之OpenSessionInViewFilter

参考:OpenSessionInViewFilter作用及配置:http://www.yybean.com/opensessioninviewfilter-role-and-configurationhttp://blog.youkuaiyun.com/fooe84/article/details/680449主要涉及类:org.springframework.orm.hibernat...

ddige1793的博客 60

spring 的OpenSessionInViewFilter简介

假设在你的应用中Hibernate是通过spring 来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者OpenSessionInViewInterceptor。session会在transaction结束后关闭。如果你采用了spring的声明式事务模式,它会对你的被代理对象的每一个方法进行事务包装(AOP的方式)。如下:         cl

xymyeah 1040

spring 的OpenSessionInViewFilter简介及源码

假设在你的应用中Hibernate是通过spring 来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者OpenSessionInViewInterceptor。session会在transaction结束后关闭。如果你采用了spring的声明式事务模式,它会对你的被代理对象的每一个方法进行事务包装(AOP的方式)。如下:         cl

南极光经验分享 1514

Spring的OpenSessionInViewFilter简介

假设在你的应用中Hibernate是通过spring来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者OpenSessionInViewInterceptor。session会在transaction结束后关闭。如果你采用了spring的声明式事务模式,它会对你的被代理对象的每一个方法进行事务包装(AOP的方式)。        cla

zrzlxln的专栏 493

[收藏]OpenSessionInViewFilter和OpenSessionInViewInterceptor

以一个 Web 应用为例, Spring 提供了 OpenSessionInViewFilter 和 OpenSessionInViewInterceptor 。我们可以随意选择一个类来实现相同的功能。两种方法唯一的不同就在于 interceptor 在 Spring 容器中运行并被配置在 web 应用的上下文中,而 Filter 在 Spring 之前运行并被...

个人站点: macrotea.cn/nav 115

OpenSessionInViewFilter简介和学习

假设在你的应用中Hibernate是通过spring 来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者OpenSessionInViewInterceptor。session会在transaction结束后关闭。 如果你采用了spring的声明式事务模式,它会对你的被代理对象的每一个方法进行事务包装(AOP的方式)。如下:   <bea

唐伯猫的IT生涯 336
上一篇: Wicket使用日记
下一篇: 中文化问题的解决方案 CharactorEncodingFilter
FredWorks
博客等级 码龄23年 21粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值