Skip to content

Commit

Permalink
HHH-8276 - Integrate LoadPlans into UniqueEntityLoader (PoC)
Browse files Browse the repository at this point in the history
  • Loading branch information
sebersole committed Oct 9, 2013
1 parent 18079f3 commit af1061a
Show file tree
Hide file tree
Showing 115 changed files with 8,156 additions and 1,309 deletions.
Expand Up @@ -30,12 +30,12 @@
import org.hibernate.internal.CoreLogging;
import org.hibernate.internal.CoreMessageLogger;
import org.hibernate.loader.entity.UniqueEntityLoader;
import org.hibernate.loader.plan.exec.query.spi.NamedParameterContext;
import org.hibernate.loader.plan.exec.query.spi.QueryBuildingParameters;
import org.hibernate.loader.plan.exec.spi.EntityLoadQueryDetails;
import org.hibernate.loader.plan.internal.SingleRootReturnLoadPlanBuilderStrategy;
import org.hibernate.loader.plan.spi.LoadPlan;
import org.hibernate.loader.plan.spi.build.MetadataDrivenLoadPlanBuilder;
import org.hibernate.loader.plan2.build.internal.FetchStyleLoadPlanBuildingAssociationVisitationStrategy;
import org.hibernate.loader.plan2.build.spi.MetamodelDrivenLoadPlanBuilder;
import org.hibernate.loader.plan2.exec.query.spi.NamedParameterContext;
import org.hibernate.loader.plan2.exec.query.spi.QueryBuildingParameters;
import org.hibernate.loader.plan2.exec.spi.EntityLoadQueryDetails;
import org.hibernate.loader.plan2.spi.LoadPlan;
import org.hibernate.loader.spi.AfterLoadAction;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.persister.entity.OuterJoinLoadable;
Expand Down Expand Up @@ -72,12 +72,12 @@ public AbstractLoadPlanBasedEntityLoader(
this.uniqueKeyType = uniqueKeyType;
this.entityName = entityPersister.getEntityName();

final SingleRootReturnLoadPlanBuilderStrategy strategy = new SingleRootReturnLoadPlanBuilderStrategy(
final FetchStyleLoadPlanBuildingAssociationVisitationStrategy strategy = new FetchStyleLoadPlanBuildingAssociationVisitationStrategy(
factory,
buildingParameters.getQueryInfluencers()
);

this.plan = MetadataDrivenLoadPlanBuilder.buildRootEntityLoadPlan( strategy, entityPersister );
this.plan = MetamodelDrivenLoadPlanBuilder.buildRootEntityLoadPlan( strategy, entityPersister );
this.staticLoadQuery = EntityLoadQueryDetails.makeForBatching(
plan,
uniqueKeyColumnNames,
Expand Down
Expand Up @@ -32,7 +32,7 @@
import org.hibernate.engine.spi.LoadQueryInfluencers;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.internal.CoreLogging;
import org.hibernate.loader.plan.exec.query.spi.QueryBuildingParameters;
import org.hibernate.loader.plan2.exec.query.spi.QueryBuildingParameters;
import org.hibernate.persister.entity.OuterJoinLoadable;
import org.hibernate.type.Type;

Expand Down
Expand Up @@ -23,13 +23,19 @@
*/
package org.hibernate.loader.plan.exec.internal;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import org.jboss.logging.Logger;

import org.hibernate.cfg.NotYetImplementedException;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.hql.internal.NameGenerator;
import org.hibernate.internal.CoreLogging;
import org.hibernate.internal.util.StringHelper;
import org.hibernate.loader.CollectionAliases;
import org.hibernate.loader.DefaultEntityAliases;
Expand All @@ -50,6 +56,9 @@
import org.hibernate.loader.plan.spi.Return;
import org.hibernate.loader.plan.spi.ScalarReturn;
import org.hibernate.loader.plan.spi.SourceQualifiable;
import org.hibernate.loader.plan2.build.spi.TreePrinterHelper;
import org.hibernate.loader.plan2.spi.LoadPlan;
import org.hibernate.loader.plan2.spi.QuerySpace;
import org.hibernate.loader.spi.JoinableAssociation;
import org.hibernate.persister.collection.CollectionPersister;
import org.hibernate.persister.entity.EntityPersister;
Expand All @@ -64,6 +73,8 @@
* @author Steve Ebersole
*/
public class AliasResolutionContextImpl implements AliasResolutionContext {
private static final Logger log = CoreLogging.logger( AliasResolutionContextImpl.class );

private final SessionFactoryImplementor sessionFactory;

private final Map<Return,String> sourceAliasByReturnMap;
Expand Down
Expand Up @@ -107,7 +107,6 @@ public void hydrate(ResultSet resultSet, ResultSetProcessingContext context) thr
// broadcast the fact that a hydrated identifier value just became associated with
// this entity reference
processingState.registerIdentifierHydratedForm( identifierHydratedForm );
// hydrateIdentifierFetchIdentifiers( resultSet, context, identifierHydratedForm );
for ( EntityReferenceReader reader : identifierFetchReaders ) {
reader.hydrateIdentifier( resultSet, context );
}
Expand Down
Expand Up @@ -26,15 +26,15 @@
import org.hibernate.loader.plan.spi.LoadPlan;
import org.hibernate.persister.collection.CollectionPersister;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.persister.walking.spi.MetadataDrivenModelGraphVisitor;
import org.hibernate.persister.walking.spi.MetamodelGraphWalker;

/**
* A metadata-driven builder of LoadPlans. Coordinates between the {@link MetadataDrivenModelGraphVisitor} and
* A metadata-driven builder of LoadPlans. Coordinates between the {@link org.hibernate.persister.walking.spi.MetamodelGraphWalker} and
* {@link LoadPlanBuilderStrategy}.
*
* @author Steve Ebersole
*
* @see MetadataDrivenModelGraphVisitor
* @see org.hibernate.persister.walking.spi.MetamodelGraphWalker
*/
public class MetadataDrivenLoadPlanBuilder {
/**
Expand All @@ -48,7 +48,7 @@ public class MetadataDrivenLoadPlanBuilder {
* @return The built load plan.
*/
public static LoadPlan buildRootEntityLoadPlan(LoadPlanBuilderStrategy strategy, EntityPersister persister) {
MetadataDrivenModelGraphVisitor.visitEntity( strategy, persister );
MetamodelGraphWalker.visitEntity( strategy, persister );
return strategy.buildLoadPlan();
}

Expand All @@ -61,7 +61,7 @@ public static LoadPlan buildRootEntityLoadPlan(LoadPlanBuilderStrategy strategy,
* @return The built load plan.
*/
public static LoadPlan buildRootCollectionLoadPlan(LoadPlanBuilderStrategy strategy, CollectionPersister persister) {
MetadataDrivenModelGraphVisitor.visitCollection( strategy, persister );
MetamodelGraphWalker.visitCollection( strategy, persister );
return strategy.buildLoadPlan();
}
}
Expand Up @@ -37,13 +37,14 @@
*
* @author Steve Ebersole
*/
public class CascadeLoadPlanBuilderStrategy extends StandardFetchBasedLoadPlanBuilderStrategy {
public class CascadeStyleLoadPlanBuildingAssociationVisitationStrategy
extends FetchStyleLoadPlanBuildingAssociationVisitationStrategy {
private static final FetchStrategy EAGER = new FetchStrategy( FetchTiming.IMMEDIATE, FetchStyle.JOIN );
private static final FetchStrategy DELAYED = new FetchStrategy( FetchTiming.DELAYED, FetchStyle.SELECT );

private final CascadingAction cascadeActionToMatch;

public CascadeLoadPlanBuilderStrategy(
public CascadeStyleLoadPlanBuildingAssociationVisitationStrategy(
CascadingAction cascadeActionToMatch,
SessionFactoryImplementor sessionFactory,
LoadQueryInfluencers loadQueryInfluencers) {
Expand Down

This file was deleted.

0 comments on commit af1061a

Please sign in to comment.