当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

OpenSessionInViewFilter详细使用说明

发表于: 2015-01-21   作者:佳佳1212   来源:转载   浏览:
摘要: 这里我们要弄清楚的是为什么要使用OpenSessionInViewFilter?我们是到到这个一般是解决延迟加载出现的问题。那么为什么会有问题呢,首先明确以下几点 session的开闭,Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给

这里我们要弄清楚的是为什么要使用OpenSessionInViewFilter?我们是到到这个一般是解决延迟加载出现的问题。那么为什么会有问题呢,首先明确以下几点

  • session的开闭,Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常。(这里明确下延迟加载,简单说就是当我们没有真正使用实体的属性,并不会触发查询hql,例如我们用到了用户实体的名称时候,才会真正操作数据库去查询)
  • spring提供的OpenSessionInViewFilter就解决了此问题。该filter会将session绑定至当前请求的线程上,这样只要是在当前请求的生命周期内,可以随时访问session,只需要在项目的web.xml文件中增加如下配置即可

 

	<filter> 
		<filter-name>OpenSessionInViewFilter</filter-name> 
		<filter-class> 
		org.springframework.orm.hibernate4.support.OpenSessionInViewFilter 
		</filter-class> 
		<init-param> 
			<param-name>sessionFactoryBeanName</param-name> 
			<param-value>sessionFactory</param-value> 
	   </init-param> 
	   <init-param> 

            <param-name>singleSession</param-name> 
            <param-value>true</param-value>            
        </init-param> 
        <init-param> 
			<param-name> flushMode </param-name> 
    		<param-value>COMMIT</param-value>         
        </init-param> 
	</filter> 
	
	
	<filter-mapping>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>  
  • 简单说下

FlushMode有5个值可选

 

Always:任何代码都会Flush
AUTO:默认方式–自动
Commit:COMMIT时
Never:始终不
MANUAL:手动方式

主要是配置何时与数据库同步,主要是因为hibernate的缓存机制,例如一个实体在缓存中存在,就不会查询据库 详细参考http://blog.csdn.net/lssssss/article/details/6839633

 

以上说明有个更详细文章http://blog.csdn.net/a19881029/article/details/7916702

OpenSessionInViewFilter详细使用说明

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
时下在大型的网络站点上,大部分都是采用LNMP部署的结构。这里主要理清下Nginx的部署,对nginx的使
1.gzip_comp_levle 设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩
在详细使用说明上里,对nginx的一个部分已经进行了说明。这节开始解析http部分。 在当前我的nginx.c
 这里向大家简单介绍一下JavaScript alert()函数的使用,alert--弹出消息对话框,并且alert消息对
各位技术屌丝们好, 之前我用了很长一段时间通过不断的研究揣摩,终于把RDLC报表给搞透了,今天跟大
一:前言 很多和我一样初学pcie的硬件工程师都会遇到这样一个问题,看了不少pcie相关的资料,还是搞
文章转载地址:http://hi.baidu.com/accpandsvse/blog/item/7e167783f271e8ab0cf4d297.html 在SSH整
最近整合一个struts2的工程,在配置OpenSessionInViewFilter时不起作用,网上找了很多都是strut1.x的
从书上我了解到Session接口是Hibernate向应用程序提供的操纵数据库的最主要接口,它提供了基本的保
原文地址:http://blog.csdn.net/aspdao/article/details/5663347 从书上我了解到Session接口是Hiber
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号