`
yezi
  • 浏览: 279938 次
  • 来自: 北京
社区版块
存档分类
最新评论

关于Webwork中OpenSessionInView的使用

阅读更多
1、说说为什么使用lazy
当使用Hibernate中的one-to-many、many-to one、many-to-many关系映射的时候,一个对象中会包含一个或多个Set来关联其他的对象。例如:user-groups,当程序取user对象时,如果一个用户有多个自定义组,那么程序将把组的信息也读取出来,在log中可以看到两个sql的输出。但是在页面的显示上,也许并不需要显示这个用户相关组的信息,这样系统的消耗就白白浪费了,于是hibernate提供了lazy(延迟加载)的方法来避免这一情况的发生,我们只需要在user.hbm.xml中设置lazy=true,就能实现延迟加载。
<set name="groupses" table="usergroups" catalog="many" cascade="save-update" lazy="true">
            <key>
                <column name="userid" length="32" not-null="true" />
            </key>
            <many-to-many entity-name="com.example.model.Groups">
                <column name="groupid" length="32" not-null="true" />
            </many-to-many>
        </set>


2、说说为什么使用OpenSessionInView
当hibernate+spring配合使用的时候,如果设置了lazy=true,那么在读取数据的时候,当读取了父数据后,hibernate会自动关闭session,这样,当要使用子数据的时候,系统会抛出lazyinit的错误,这时就需要使用spring提供的OpenSessionInViewFilter,
OpenSessionInViewFilter主要是保持Session状态知道request将全部页面发送到客户端,这样就可以解决延迟加载带来的问题

3、说说Webwork中使用OpenSessionInView的注意事项
web.xml中的配置要注意先后顺序,OpenSessionInViewFilter要在Webwork的filter前面,否则系统会报错。
<filter>
		<filter-name>opensession</filter-name>
		<filter-class>
			org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
		</filter-class>
		<init-param>
			<param-name>singleSession</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>sessionFactoryBeanName</param-name>
			<param-value>mySessionFactory</param-value> 
		</init-param>
	</filter>
	 
	<filter>
	    <filter-name>webwork</filter-name>
	    <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
	</filter>
         <filter-mapping>
	  <filter-name>opensession</filter-name>
	  <url-pattern>/*</url-pattern> 
	</filter-mapping>
	<filter-mapping>
	    <filter-name>webwork</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>


对于OpenSessionInView的配置中,singleSession应该设置为true,表示一个request只能打开一个session,如果设置为false的话,session可以被打开多个,这时在update、delete的时候会出现打开多个session的异常。

但是当设置为true的时候,系统的性能会因为用户的网络状况受到影响,当request在生成页面完成后,session才会被释放,所以如果用户的网络状况比较差,那么连接池中的链接会迟迟不被回收,造成内存增加,系统性能受损。但是如果不用这种方法的话,lazy模式有体现不出他的有点,用?不用?两难啊
分享到:
评论
1 楼 dreamfly 2008-01-28  
大哥,真是忠心的崇拜你,解决了我玩了一下午的问题。你在深圳不,请你吃饭。

相关推荐

    webwork2.17中文使用手册

    webwork2.17中文使用手册

    webwork中文 webwork中文参考 webwork中文资料 webwork学习资料

    尽管随着时间的发展,新的框架如Spring MVC和Play Framework等逐渐崭露头角,但WebWork依然在许多现有项目中发挥着重要作用,特别是在那些重视代码质量和开发效率的企业中。对于希望深入理解MVC架构和Java Web开发的...

    webwork标签的使用和介绍

    WebWork 是一款基于 Java 的 MVC(Model-View-Controller)框架,它提供了强大的标签库来简化JSP页面的开发。这些标签使得开发者能够更高效地处理业务...使用WebWork,开发者可以创建出结构清晰、易于维护的Web应用。

    webwork中文参考手册

    这个“WebWork中文参考手册”显然是针对想要学习和使用WebWork框架的初学者准备的资源。手册可能包含了框架的基本概念、核心组件、配置、控制器、模型、视图、动作、拦截器以及与Spring等其他框架的集成等内容。 在...

    webwork中文帮助文档

    本中文帮助文档旨在为使用WebWork框架的开发者提供详尽的指导和支持。 在WebWork框架中,模型(Model)负责处理业务逻辑,视图(View)负责展示数据,控制器(Controller)则协调模型和视图,处理用户的请求。这种...

    webwork中上传文件

    在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...

    webwork+spring整合例子 内带使用说明 以及webwork文档(中文)

    WebWork和Spring是两个在Java Web开发中广泛使用的框架,它们各自有着独特的优点。WebWork以其强大的动作映射和强大的表单验证而著名,而Spring则以其依赖注入和全面的企业级服务支持闻名。将这两个框架整合在一起,...

    webwork中文文档

    1. **配置WebWork**:首先,需要在项目的web.xml中配置WebWork的监听器,并在WebWork的配置文件中定义Action和拦截器。 2. **编写Action类**:创建Action类并实现相应的业务逻辑。 3. **配置拦截器**:根据需要选择...

    webwork2中文教程

    通过阅读这份"webwork2中文教程",你可以快速上手并熟练掌握WebWork2的使用技巧,从而在开发过程中提高效率,降低出错率。 总的来说,WebWork2是一个强大的Web应用框架,它的设计思想和特性在后来的Struts2中得到了...

    WebWork中文文档

    ”表明这是一份关于WebWork框架的学习资料。WebWork是一个基于Java的开源Web应用框架,它提供了一种灵活的方式来构建复杂的Web应用程序。下面,我们将详细探讨与WebWork相关的几个关键知识点。 ### WebWork框架简介...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    6. **视图渲染**:WebWork使用JSP、FreeMarker或其他模板引擎作为视图技术,通过ActionSupport类和结果类型来决定如何渲染视图,使得视图层与控制层解耦。 7. **标签库**:WebWork提供了一套自定义的JSP标签,如`...

    webwork 中文API

    WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序开发中被广泛使用。这个“WebWork 中文API”显然是一份由专家翻译的文档,目的是帮助中国开发者更好地理解和使用WebWork框架。下面将详细阐述...

    WebWork入门教程[创建你第一个WebWork action]

    在WebWork的学习过程中,了解它的设计理念、掌握Action的创建和配置,以及熟练使用拦截器和值栈,将有助于提升你构建高效、可维护的Java Web应用的能力。同时,WebWork与Struts2的紧密联系,也意味着学习WebWork对...

    使用webwork上传excel并导入数据库

    在IT行业中,WebWork是一个基于Java的MVC(模型-视图-控制器)框架,它提供了灵活的事件驱动模型和强大的Action支持,用于构建企业级Web应用。本话题聚焦于如何利用WebWork来处理Excel文件的上传,并将其数据导入到...

    webwork2中文文档

    8. **测试与调试**:提供关于单元测试、集成测试和调试WebWork2应用的方法,可能包括JUnit和Mockito的使用。 9. **最佳实践与性能优化**:分享一些开发WebWork2应用的最佳实践,以及如何优化应用程序性能,如减少...

    WEBWORK

    这允许在 JSP 页面中使用 WebWork 的标签,如 `&lt;s:form&gt;`、`&lt;s:textfield&gt;` 等。 3. **welcome-file-list**:定义了当用户访问目录而不是具体文件时,服务器应该显示的默认欢迎页面。在这个例子中,如果用户访问...

    webwork2中文参考

    webwork2中文参考

    webwork电子书

    这个压缩包包含了两个关于Webwork的重要资源,即"Webwork2 Guide"和"webwork2doc_zh1[1]"电子书,对于学习和使用Webwork的用户来说是宝贵的参考资料。 首先,我们来看"Webwork2 Guide"。这本指南通常会提供Webwork2...

    webwork的使用教程

    在WebWork中,我们通常会看到`xwork.xml`配置文件,它是WebWork应用的主要配置中心,用来定义Action、拦截器、数据绑定规则等关键组件。 **WebWork介绍** WebWork 是一种灵活且高效的Web开发框架,旨在简化Java Web...

    webWork

    WebWork是一个基于Java的开源MVC(模型-视图-控制器)框架,它在Web应用程序开发中扮演着重要角色。这个“webWork中文教程”旨在帮助开发者深入理解WebWork框架的原理、特性和实践方法。下面,我们将详细介绍WebWork...

Global site tag (gtag.js) - Google Analytics