Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

[hibernate-commits] Hibernate SVN: r20206 -
 search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine.

hibernate-commits

2010-08-20


Author LoginPost Reply
Author: hardy.ferentschik
Date: 2010-08-20 07:01:35 -0400 (Fri, 20 Aug 2010)
New Revision: 20206

Removed:
 search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoader.java
Modified:
 search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ProjectionLoader.java
Log:
HSEARCH-278 Made sure that ProjectionLoader does not skew object loading times

Deleted: search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoader.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoader.java  2010-08-20 11:01:03 UTC (rev 20205)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoader.java  2010-08-20 11:01:35 UTC (rev 20206)
@@(protected) @@
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2010, Red Hat, Inc. and/or its affiliates or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat, Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.search.engine;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.slf4j.Logger;
-
-import org.hibernate.Session;
-import org.hibernate.search.util.HibernateHelper;
-import org.hibernate.search.util.LoggerFactory;
-
-/**
- * @author Emmanuel Bernard
- */
-public class ObjectLoader extends AbstractLoader {
-  private static final Logger log = LoggerFactory.make();
-  private Session session;
-
-  public void init(Session session, SearchFactoryImplementor searchFactoryImplementor) {
-    super.init( session, searchFactoryImplementor );
-    this.session = session;
-  }
-
-  public final Object executeLoad(EntityInfo entityInfo) {
-    return ObjectLoaderHelper.load( entityInfo, session );
-  }
-
-  public final List executeLoad(EntityInfo... entityInfos) {
-    if ( entityInfos.length == 0 ) {
-      return Collections.EMPTY_LIST;
-    }
-    if ( entityInfos.length == 1 ) {
-      final Object entity = load( entityInfos[0] );
-      if ( entity == null ) {
-        return Collections.EMPTY_LIST;
-      }
-      else {
-        final List<Object> list = new ArrayList<Object>( 1 );
-        list.add( entity );
-        return list;
-      }
-    }
-    //use load to benefit from the batch-size
-    //we don't face proxy casting issues since the exact class is extracted from the index
-    for ( EntityInfo entityInfo : entityInfos ) {
-      session.load( entityInfo.clazz, entityInfo.id );
-    }
-    List result = new ArrayList( entityInfos.length );
-    for ( EntityInfo entityInfo : entityInfos ) {
-      try {
-        Object entity = session.load( entityInfo.clazz, entityInfo.id );
-        HibernateHelper.initialize( entity );
-        result.add( entity );
-      }
-      catch ( RuntimeException e ) {
-        if ( LoaderHelper.isObjectNotFoundException( e ) ) {
-          log.debug(
-              "Object found in Search index but not in database: {} with id {}",
-              entityInfo.clazz, entityInfo.id
-          );
-        }
-        else {
-          throw e;
-        }
-      }
-    }
-    return result;
-  }
-}

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ProjectionLoader.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ProjectionLoader.java  2010-08-20 11:01:03 UTC (rev 20205)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ProjectionLoader.java  2010-08-20 11:01:35 UTC (rev 20206)
@@(protected) @@
-/* $Id$
- *
+/*
* Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2009, Red Hat, Inc. and/or its affiliates or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat, Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
+ *
+ * Copyright (c) 2010, Red Hat, Inc. and/or its affiliates or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat, Inc.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
*/
package org.hibernate.search.engine;

@@(protected) @@
import org.hibernate.transform.ResultTransformer;

/**
- * Implementation of the <code>Loader</code> interface used for loading entities which are projected via
+ * Implementation of the {@(protected)
* {@(protected)}.
*
* @author Emmanuel Bernard
@@(protected) @@
public class ProjectionLoader implements Loader {
 private SearchFactoryImplementor searchFactoryImplementor;
 private Session session;
-  private Loader objectLoader;
+  private MultiClassesQueryLoader objectLoader;
 private Boolean projectThis;
 private ResultTransformer transformer;
 private String[] aliases;
@@(protected) @@
     for ( EntityInfo entityInfo : entityInfos ) {
       for ( int index : entityInfo.indexesOfThis ) {
         // set one by one to avoid loosing null objects (skipped in the objectLoader.load( EntityInfo[] ))
-          entityInfo.projection[index] = objectLoader.load( entityInfo );
+          // use objectLoader.executeLoad to prevent measuring load time again (see AbstractLoader)
+          entityInfo.projection[index] = objectLoader.executeLoad( entityInfo );
       }
     }
   }

_______________________________________________
hibernate-commits mailing list
hibernate-commits@(protected)
https://lists.jboss.org/mailman/listinfo/hibernate-commits
©2008 gg3721.com - Jax Systems, LLC, U.S.A.