zoukankan      html  css  js  c++  java
  • ssh框架整合时的延迟加载问题(no session问题)的分析以及解决方案

    当我们整合完三大框架,并采用hibernate的延迟加载方案时,会出现如下的异常:


    现在对这个异常进行分析,如下图所示(模拟通过id查询用户信息的过程):


    上图分析了为什么会出现no session的问题,现在对这个问题进行解决,解决的方法主要由有两种:

    1. 手动将延迟加载初始化 Hibernate.initialize(延迟对象),这种方式不推荐使用

    2 . 在配置文件(web.xml)中配置openSessionInViewFilter

            <filter>
    		<filter-name>openSessionInViewFilter</filter-name>
    		<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
    	</filter>    
    	<filter-mapping>
    		<filter-name>openSessionInViewFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>

    这段配置的原理就是将session的关闭操作,不再是在service层完成,而是在web层完成

    需要注意的是,这段配置一定要配置在struts2框架入口的上方,如下:

    	<!-- 解决延迟加载引发的问题 -->
    		<filter>
    			<filter-name>openSessionInViewFilter</filter-name>
    			<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
    		</filter>
    		<filter-mapping>
    			<filter-name>openSessionInViewFilter</filter-name>
    			<url-pattern>/*</url-pattern>
    		</filter-mapping>
    	
    	<!-- struts2的程序入口 -->
    	<filter>
    		<filter-name>struts2</filter-name>
    		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>



  • 相关阅读:
    Path类的最全面具体解释
    数据挖掘之分类算法---knn算法(有matlab样例)
    Android View框架的measure机制
    2017年本博客知识体系引导(更新至2017.8.11)
    [DevExpress]DevExpress 中 汉化包 汉化方法
    盗墓笔记第一季全(12集)下载地址
    浅谈spring——注解配置(九)
    git使用系列(一)
    算法与数据结构(一)
    phpstrom 2016.2 注册服务器地址
  • 原文地址:https://www.cnblogs.com/daimzh/p/12854509.html
Copyright © 2011-2022 走看看