OpenSessionInViewFilter 的配置及作用    

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>

OpenSessionInViewFilter 的配置及作用

时间: 2024-10-26 12:15:32

OpenSessionInViewFilter 的配置及作用    的相关文章

环境变量配置的作用和区别:Path、Classpath、JAVA_HOME

环境变量配置的作用和区别:Path.Classpath.JAVA_HOME 一个是零时配置,另一个是永久性配置. 零时配置的方法: 打开cmd窗口——>输入set命令,回车——>输入set+需要配置的路径——>退出cmd窗口结束. 永久性配置的方法: 右键单击我的电脑——>属性——>高级(右下角环境变量)——>选择新建或者编辑进行环境变量的配置. 配置环境变量的作用: 在任何的路径下都能识别java和javac命令:path 在任何的路径下都能找到我的类class文件:

OpenSessionInViewFilter配置和作用

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

hibernate 在web.xml中配置的作用

1. <filter>     <filter-name>Spring character encoding filter</filter-name>     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>     <init-param>       <param-name>encoding</p

OpenSessionInViewFilter 的配置及替代方案(转)

鸣谢:http://justsee.iteye.com/blog/1174999,http://blog.csdn.net/sunsea08/article/details/4545186 Spring为我们解决Hibernate的Session的关闭与开启问题. Hibernate 允许对关联对象.属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行.如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访

SpringMvc相关配置的作用

1. <!-- 配置 handlerAdapter--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> 这个作用就是 请求controller的路径为 /hello.do 与/hello都可以访问,不加上面配置 /hello就会报404错误

配置jdk环境变量和配置的作用

对于JDK要配置三个环境变量,分别是JAVA_HOME.path.classpath 对于我本人电脑来说,配置如下: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_191;(JDK的安装路径) path: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(JDk的运行和编译环境的路径) classpath:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar; 下面我对这三个命令分别说一下: JAVA_

Nginx基本配置和作用

nginx可以重新加载文件的.我们直接运行:nginx -s reload 配置文件有没有问题,可以直接输入:nginx -t nginx -s stop就可以关闭 但有时我们就不想它挂的时候访问另外一个,而只是希望一个服务器访问的机会比另外一个大,使用weight 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #gzip  on;     #一个服务器挂了,多配置一个jetty,weight=数字

Ant工具 ant的安装与配置 ant作用

Ant是一种基于Java的build工具.理论上来说,它有些类似于(Unix)C中的make ,但没有make的缺陷. 既然我们已经有了make, gnumake, nmake, jam以及其他的build工具为什么还要要一种新的build工具呢?因为Ant的原作者在多种(硬件)平台上开发软件时,无法忍受这些工具的限制和不便.类似于make的工具本质上是基于shell(语言)的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命令没太大区别).这就意味着你可以很容易地通过使用OS特有的或

如何不重新启动 Emacs 就让 .emacs 的配置起作用

老是重新启动 emacs ,效率很低,其实可以不用重启Emacs就可以让新的配置生效 用 emacs 打开 .emacs 文件,C-x C-e 光标前面的运行一条语句.立即生效. 选择一个 region , M-x eval-region M-x load-file ~/.emacs M-x eval-buffer