The project encountered in the ssh lazy loading problem (finally solved !!!)

sponsored links
hibernate3.3.2 + spring3.0.3 + struts2.2.1

Lazy loading (Load On Demand) is a unique and powerful data access method, which can automatically when the user scrolls the page to get more data, and the new data obtained will not affect the display of the original data, while minimize the consumption of server resources. (Baidu said)

Popular point is not looking to identify an object associated with the object of his, but need the associated objects (or properties) only to find the database, also known as lazy loading.

In general, we are in the many-to-one of many set lazy = false, which is available to our own hibernate.

Then lock up the spring session, we can put it another way: OpenSessionInViewFilter

OpenSessionInViewFilter is a Spring provided a support class for Hibernate

Generally, we can be so configured directly in the web.xml

<!-- Spring Provides avoidance of Hibernate lazy loading exception filters  
   Let the Session after the completion of the request for interpretation and close  , Thereby avoiding lazy load exception   -->
  <filter>
    <filter-name>openSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>

<filter-mapping>
    <filter-name>openSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>  


This will save a lot of trouble to many places do not need to set up in each of the lazy = false

This method should be very popular, I also got from the Internet. Yet the novice I was directly used to take over the project are not deployed from the effects of N times, really depressing. Each error: org.hibernate.LazyInitializationException: could not initialize proxy - no Session.

Obviously, session closed. Tragedy

Collapse at the time, why the Internet are saying, but it is always wrong.

Know that today I saw this article http://www.javaeye.com/topic/32001

Suddenly the fog suddenly.

Since the spring tube from the sessionFactory, session must also be obtained through his fishes Yeah, so this part of the mapping of the mapping should also be placed on the back of struts2, after this class, and then do the real Action codes, and finally Hibernate Session according to the situation will be closed.

The following is the complete web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        
        
        <!-- struts2 -->
<filter>
        <filter-name>struts2</filter-name>
        <filter-class>
                org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
</filter>
  
  
  
  
<!-- spring  Consolidation  struts2 -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:daoContext.xml,classpath:actionContext.xml,classpath:serviceContext.xml,classpath:applicationContext.xml</param-value>
</context-param>

<!-- Spring Provides avoidance of Hibernate lazy loading exception filters  
   Let the Session after the completion of the request for interpretation and close  , Thereby avoiding lazy load exception   -->
  <filter>
    <filter-name>openSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>
  
  
  
  <!--  The following 2  mapping Can you swap position   -->
  
  <filter-mapping>
    <filter-name>openSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>  
  
  
  <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
  </filter-mapping>
  
        
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


ok, so lazy save in each of the many configurations.

Evidently not enough for understanding the underlying ah. To fuel it!
  • del.icio.us
  • StumbleUpon
  • Digg
  • TwitThis
  • Mixx
  • Technorati
  • Facebook
  • NewsVine
  • Reddit
  • Google
  • LinkedIn
  • YahooMyWeb

Related Posts of The project encountered in the ssh lazy loading problem (finally solved !!!)

  • spring + hibernate + oracle9i to read and write CLOB

    Database-driven update classes12-9i.jar Hibernate modify the configuration of the following code <bean/> <bean Lazy-init="true"> <property name="nativeJdbcExtractor"> <ref local="nativejdbcExtractor"/>

  • Spring + Hibernate to use Glassfish Database Connection Pool

    applicationContext.xml file content <? xml version = "1.0" encoding = "UTF-8"?> <beans xmlns = " http://www.springframework.org/schema/beans " xmlns: xsi = " http://www.w3.org/2001/XMLSchema-instance " ...

  • Build flex + spring + blazeds + hibernate application

    Build flex + spring + blazeds + hibernate application First, set up the project blazeds 1, will blazeds.war extract to a directory, such as: myflex /; 2, set up java works were such as: MyFlex, in the orientation of selection create project from exis ...

  • Hibernate connection pool configuration

    Hibernate connection pool configuration <! - Jdbc -> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </ property> <property name="connection.url"> jdbc: oracle: thin: @ 10.203.14.132:15

  • hibernate generic generic DAO

    package org.lzpeng.dao; import java.io.Serializable; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Criterion; import org.springside.modules.orm.hibernate.Page; /** * * @version 2009-1-10 *

  • Spring2.0 + hibernate3.1 + log4j + mysql demo

    applicationContext.xml Non-attachment jar package, necessary friends can send an email to todd.liangt @ gmail.com

  • Struts2 + hibernate + spring problem user log in

    dao layer services layer action jsp <tr> <td align="center"> <b> user name: </ b> </ td> <td> <s: textfield name = "czyNumber" cssClass = "textstyle" theme = "simple" size = &q

  • Hibernate secondary cache

    Hibernate cache: 2-bit cache, also known as process-level cache or SessionFactory level cache, secondary cache can be shared by all of the session Cache configuration and the use of: Will echcache.xml (the document code in hibernate package directory ...

  • Hibernate's lazy strategy

    hibernate Lazy strategy can be used in: <class> tag, it can be true / false Tags can <PROPERTY> values true / false type of necessary tools to enhance <set> <list> can tag values true / false / extra <many-to-one> <on ...

  • Great collection of java interview topics

    1, object-oriented features of what has 1. Abstract: Abstract is that it has overlooked a subject has nothing to do with the current goal of those aspects in order to more fully with the current objectives of the attention-related aspects. Abstract does n

blog comments powered by Disqus
Recent
Recent Entries
Tag Cloud
Random Entries