首页 > 其他分享 >OpenSessionInViewFilter 的配置及作用

OpenSessionInViewFilter 的配置及作用

时间:2023-08-10 13:32:04浏览次数:40  
标签:Hibernate Spring 配置 Session OpenSessionInViewFilter 延迟 作用 加载

Spring为我们解决Hibernate的Session的关闭与开启问题。
Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常

(eg: org.hibernate.LazyInitializationException:(LazyInitializationException.java:42)
 - failed to lazily initialize a collection of role: cn.easyjava.bean.product.ProductType.childtypes, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: cn.easyjava.bean.product.ProductType.childtypes, no session or session was closed)。

用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定。目的是为了实现"Open Session in View"的模式。例如: 它允许在事务提交之后延迟加载显示所需要的对象。

而Spring为我们提供的OpenSessionInViewFilter过滤器为我们很好的解决了这个问题。 OpenSessionInViewFilter的主要功能是用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定。目的是为了实现"Open Session in View"的模式。例如: 它允许在事务提交之后延迟加载显示所需要的对象。
 OpenSessionInViewFilter 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到。所以 OpenSessionInViewFilter 适用于 Service 层使用HibernateTransactionManager 或 JtaTransactionManager 进行事务管理的环境,也可以用于非事务只读的数据操作中。所以在web.xml中的配置为:

<filter>
        <filter-name>Spring OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
     <init-param>
   
<!--
指定org.springframework.orm.hibernate3.LocalSessionFactoryBean在spring配置文件中的名称,默认值为sessionFactory
     如果LocalSessionFactoryBean在spring中的名称不是sessionFactory,该参数一定要指定,否则会出现找不到sessionFactory的例外
-->
     <param-name>sessionFactoryBean</param-name>
   <param-value>sessionFactory</param-value>
  </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Spring OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


标签:Hibernate,Spring,配置,Session,OpenSessionInViewFilter,延迟,作用,加载
From: https://blog.51cto.com/u_14682436/7033904

相关文章

  • Spring Boot常见企业开发场景应用、自动配置原理结构分析
     读者应具备:SpringSpringMVC服务器端开发基础Maven基础本篇主要介绍SpringBoot在企业开发中常见场景的使用、以及SpringBoot的基本原理结构。以下为本篇设计的技术应用场景:构建SpringJava程序构建JUnit测试用例构建SpringJDBCTemplate应用程序操作数据库构建Servlet、JSP程......
  • iPhone上使用Charles 抓包的配置方法与问题解决方式
    我是在Macos下配置的,其它平台的内容和步骤也差不多。配置方法:(网上很多,大致说下)一、Charles下载:1)官网下载地址:https://www.charlesproxy.com/download/  二、Charles配置代理:1)查看本机IP:help-->LocalIPAddress   2)查看或者设置访问端口:Proxy->ProxySettings三、配置ios手......
  • jboss 远程访问 配置,工作手记
     server-default-deploy-jbossweb.sar-server.xml<!--不用jboss邦定域名---><Connectorprotocol="HTTP/1.1"port="9999"address="0.0.0.0"connectionTimeout="20000"redirectPort="8443"/......
  • 直线模组在AGV物流设备起什么作用?
    在物流产业高速发展的今天,机器人技术的应用程度已经成为决定企业间相互竞争和未来发展的重要衡量因素。智能机器人运用到物流产业,其效率不言而喻。AGV智能仓储作为现代物流系统的重要组成部分,物流自动化、智能化不光是能提升效率和安全性,还可以解放更多的劳动力,节省更多的人工成本,......
  • Linux系统多网卡多网段多路由表配置
    Linux多个网卡多个网段存在的问题:1.由于只能配置一个默认网关,所以另外一个口只能配置路由,配置比较复杂;2.如果不配置的话,会存在往返路由不一致的情况,导致网络不通。所以,我们可以通过设置多个路由表的方式来实现源进源出,简单写下步骤:1.nano/etc/iproute2/rt_tables,增加两个网卡(vlan)......
  • avue-crud属性配置项参数笔记分享
     Avue是一个基于Element-plus低代码前端框架,它使用JSON配置来生成页面,可以减少页面开发工作量,极大提升效率;虽然Avue官网上面都有这些配置说明,但是如果刚开始接触不熟悉框架的话需要很久才找到自己需要的参数配置,为了方便自己今后查找使用,现将一些开发中常用的配置梳理在下......
  • vue启用https服务及nginx启用https配置
    1.vue开发环境中主要是configjs配置启用https服务devServer:{https:true,//启用https} 2.nginx 申请一个ssl证书,自行申请。 下面是一个nginx例子 需要修改的配置https主要是红色标出来部分。蓝色加粗部分主要是history模式下刷新出现404的解决办法ser......
  • Linux常用命令-日常工作配置
    1、查看指令安装list:cd/sbin2、vi退出::wq!3、没有ip命令,安装ifconfig命令:3.1、安装包:yumsearchifconfig3.2、安装依赖:yuminstallnet-tools.x86_644、查看磁盘空间:df-h5、查看mysql版本:selectversion();6、vi查询指定字符串命令模式下输入“/字符......
  • MounRiver使用技巧及配置2
    1、关于MRS编译同时输出hex文件和bin文件按照下图添加即可:${cross_prefix}${cross_objcopy}${cross_suffix}-Obinary"${ProjName}.elf" "${ProjName}.bin" 2、关于MRS编译生成数据代表含义当MRS编译完成后,编译界面显示信息如下,其中数据代表含义如下:text段是程序代码......
  • windows下部署nginx+配置代理+静态资源
    1、首先下载nginx安装包:官网网址此处以目前最新版1.25.1为基准部署2、直接解压安装包修改conf中配置:修改对应路径注:在windows中路径也是用/,而非用\3、upstream代理,和Linux环境一样静态资源配置,和Linux一样,只需要替换路径4、启动nginx上述配置OK后,双击nginx.exe文件,启动......