`
deejay
  • 浏览: 144324 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

<!-- OpenSessionInViewFilter --> 用法和问题 BatchSize

    博客分类:
  • ssh2
阅读更多

OpenSessionInViewFilter是Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,直到这个请求结束,具体是通过一个Filter来实现的。

  由于Hibernate引入了Lazy Load特性,使得脱离Hibernate的Session周期的对象如果再想通过getter方法取到其关联对象的值,Hibernate会抛出一个LazyLoad的Exception。所以为了解决这个问题,Spring引入了这个Filter,使得Hibernate的Session的生命周期变长。

1.用法:在web.xml中文件中加入以代码:(加在其它filter前面)

 <!-- OpenSessionInViewFilter -->
 <filter>
  <filter-name>hibernateFilter</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>
 </filter>

 <filter-mapping>
  <filter-name>hibernateFilter</filter-name>
  <url-pattern>*.action</url-pattern>
 </filter-mapping>

 

2.问题:在页面上循环输出list中的对象时(比如struts2的迭代标签<s:iterator value="page.resultList" status="st">),对list中的对象属性进行延迟加载时会出现代码爆炸问题。list中有多少对象,就会根据ID发出多少条SQL语句。延迟加载会使用类似where userpojo0_.Id=?的条件来加载实体。

 

解决方法:可以使用batch-size 属性来解决。在多对一关系中,在多方获取一方的属性,配制batch-size例如:

<class name="umbrella.pojo.UserPOJO" table="user" catalog="cobalt"  batch-size="5">

或者使用注解:

@Entity
@Table(name = "T_DEPARTMENT")
@BatchSize(size=20)
public class Department implements java.io.Serializable {}

此时,产生的SQL语句会变成类似这样的形式:where userpojo0_.Id in (?,?,?,?,?)。

在一对多关系中,配制batch-size例如:

<set name="students" inverse="true" cascade="all" batch-size="5">

 

 

 

分享到:
评论

相关推荐

    javaSSH框架搭建配置

    -- AOP的切入点和通知 --&gt; &lt;/aop:config&gt; &lt;/beans&gt; ``` - `&lt;beans&gt;`标签定义了Spring的配置文件根元素。 - 使用`xmlns`和`xsi:schemaLocation`指定命名空间和XSD验证文件位置。 - `&lt;bean&gt;`定义了Spring容器管理的...

    OA项目SSH整合框架

    &lt;property name="maxPoolSize" value="5"&gt;&lt;/property&gt; &lt;property name="minPoolSize" value="3"&gt;&lt;/property&gt; &lt;property name="acquireIncrement" value="2"&gt;&lt;/property&gt; &lt;property name=...

    SSH框架整合

    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;hibernateFilter&lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; ...

    Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00

    **2.3 OpenSessionInViewFilter使用方法** 为了提高性能,通常会在Spring中使用`OpenSessionInViewFilter`来管理Hibernate的Session。这样可以在整个请求周期内保持Session打开状态,从而避免多次打开和关闭Session...

    ssh基本配置过程,是struts2的

    &lt;filter-name&gt;openSessionInViewFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;singleSession&lt;/param-...

    ssha 最新 最完整 配置信息

    #### OpenSessionInViewFilter使用方法 **表格13**: web.xml配置文件OpenSessionInView设置(必需设置) ```xml &lt;filter&gt; &lt;filter-name&gt;openSessionInViewFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework...

    使用Spring引起的错误

    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;!-- 设置Flush Mode --&gt; &lt;init-param&gt; &lt;param-name&gt;flushMode&lt;/param-name&gt; &lt;param-value&gt;AUTO&lt;/param-...

    ssh配置总结

    2. **OpenSessionInViewFilter配置**:该过滤器用于解决Hibernate的懒加载问题,在每个请求处理前后开启和关闭Session,确保线程安全和资源释放。 ```xml &lt;!-- 配置OpenSessionInViewFilter --&gt; &lt;filter&gt; ...

    struts2+hibernate+spring

    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;!-- ExtremeTable Excel/PDF 导出过滤器 --&gt; &lt;filter&gt; &lt;filter-name&gt;eXtremeExport&lt;/filter-...

    struts2 spring hibernate整合要点、注意点

    &lt;filter-name&gt;openSessionInViewFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.orm.hibernate5.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;...

    SSH搭建详细步骤

    - 使用IDE的快捷方式自动生成getters和setters方法。 4. **创建实体类的映射文件**:在`src`目录下创建一个名为`User.hbm.xml`的文件,并添加以下内容: ```xml &lt;hibernate-mapping package="com.lily.entity"&gt; ...

    configuration

    从给定的文件信息来看,我们正在探讨的主题是配置(configuration),特别关注的是SSH泛型代码,这在Java Web开发中通常指的是Spring、Struts和Hibernate这三个框架的结合使用。下面,我们将深入解析这些概念以及...

    SSH整合配置.doc

    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;/web-app&gt; ``` **2. Struts配置文件(struts-config.xml)** Struts配置文件用于定义Action映射...

    Struts2+Spring+Hibernate搭建全解

    -- 设置使用Spring作为对象工厂 --&gt; &lt;constant name="struts.objectFactory" value="spring"/&gt; &lt;!-- 定义包 --&gt; &lt;package name="crm_employee" extends="struts-default" namespace="/emp"&gt; &lt;!-- 定义Action --&gt;...

    spring框架中常用的配置

    - 在Spring的配置文件中,可以通过`&lt;tx:advice&gt;`元素来定义事务管理的策略,并且通过`&lt;aop:config&gt;`元素将事务管理策略应用到特定的Bean或方法上。 - 示例配置: ```xml &lt;bean id="transactionManager" class=...

    S2SH xml配置文件

    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;/filter&gt; ``` - `OpenSessionInViewFilter`过滤器可以开启Hibernate的延迟加载功能,使得在一个HTTP请求范围...

    Spring提供的CharacterEncoding和OpenSessionInView功能

    在处理Web应用时,Spring提供了一些关键特性,如`CharacterEncodingFilter`和`OpenSessionInViewFilter`,它们对于解决特定问题至关重要。 首先,让我们深入了解一下`CharacterEncodingFilter`。在Web应用中,字符...

    ssh配置文件

    &lt;filter-name&gt;OpenSessionInViewFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;...

    java面试宝典

    -- Struts2配置 --&gt; &lt;filter&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; ...

Global site tag (gtag.js) - Google Analytics