/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.loader.plan.build.spi;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.loader.plan.build.internal.spaces.CompositePropertyMapping;
import org.hibernate.loader.plan.spi.QuerySpaces;
import org.hibernate.persister.collection.CollectionPersister;
import org.hibernate.persister.entity.EntityPersister;
Models a collection of QuerySpace
references and exposes the ability to create an ExpandingQuerySpace
for "returns" and fetches; used when building a load plan. Author: Steve Ebersole
/**
* Models a collection of {@link org.hibernate.loader.plan.spi.QuerySpace} references and
* exposes the ability to create an {@link ExpandingQuerySpace} for "returns" and fetches;
* used when building a load plan.
*
* @author Steve Ebersole
*/
public interface ExpandingQuerySpaces extends QuerySpaces {
Generate a unique ID to be used when creating an ExpandingQuerySpace
. Using this method to generate a unique ID ensures that this object does not contain a QuerySpace
with the returned unique ID. Returns: The unique ID.
/**
* Generate a unique ID to be used when creating an {@link ExpandingQuerySpace}.
* <p/>
* Using this method to generate a unique ID ensures that this object
* does not contain a {@link org.hibernate.loader.plan.spi.QuerySpace} with the returned unique ID.
*
* @return The unique ID.
*/
String generateImplicitUid();
Create an ExpandingEntityQuerySpace
for an entity "return" with the specified unique ID. The unique ID should be generated using generateImplicitUid()
, A unique suffix may be added to the unique ID for an existing QuerySpace
. In this case, it is the caller's responsibility to ensure uniqueness. Params: - uid – The unique ID for the root entity query space.
- entityPersister – The entity persister.
Throws: - IllegalStateException – if there is already a query space with the
specified unique ID.
See Also: Returns: the ExpandingEntityQuerySpace
with the specified unique ID.
/**
* Create an {@link ExpandingEntityQuerySpace} for an entity "return" with the
* specified unique ID.
*
* The unique ID should be generated using {@link #generateImplicitUid()},
*
* A unique suffix may be added to the unique ID for an existing {@link org.hibernate.loader.plan.spi.QuerySpace}.
* In this case, it is the caller's responsibility to ensure uniqueness.
*
* @param uid The unique ID for the root entity query space.
* @param entityPersister The entity persister.
* @return the {@link ExpandingEntityQuerySpace} with the specified unique ID.
* @throws IllegalStateException if there is already a query space with the
* specified unique ID.
*
* @see org.hibernate.loader.plan.spi.EntityReturn
*/
ExpandingEntityQuerySpace makeRootEntityQuerySpace(
String uid,
EntityPersister entityPersister);
Create an ExpandingEntityQuerySpace
for an entity (that is not a "return") with the specified unique ID. The unique ID should be generated using generateImplicitUid()
, A unique suffix may be added to the unique ID for an existing QuerySpace
. In this case, it is the caller's responsibility to ensure uniqueness. Params: - uid – The unique ID for the entity query space.
- entityPersister – The entity persister.
- canJoinsBeRequired –
true
if joins added to the returned value
can be required joins; false
, otherwise.
Throws: - IllegalStateException – if there is already a query space with the
specified unique ID.
See Also: Returns: the ExpandingEntityQuerySpace
with the specified unique ID.
/**
* Create an {@link ExpandingEntityQuerySpace} for an entity (that is not a "return")
* with the specified unique ID.
*
* The unique ID should be generated using {@link #generateImplicitUid()},
*
* A unique suffix may be added to the unique ID for an existing {@link org.hibernate.loader.plan.spi.QuerySpace}.
* In this case, it is the caller's responsibility to ensure uniqueness.
*
* @param uid The unique ID for the entity query space.
* @param entityPersister The entity persister.
* @param canJoinsBeRequired <code>true</code> if joins added to the returned value
* can be required joins; <code>false</code>, otherwise.
*
* @return the {@link ExpandingEntityQuerySpace} with the specified unique ID.
* @throws IllegalStateException if there is already a query space with the
* specified unique ID.
*
* @see org.hibernate.loader.plan.spi.Join
*/
ExpandingEntityQuerySpace makeEntityQuerySpace(
String uid,
EntityPersister entityPersister,
boolean canJoinsBeRequired);
Create an ExpandingCollectionQuerySpace
for a collection "return" with the specified unique ID. The unique ID should be generated using generateImplicitUid()
, A unique suffix may be added to the unique ID for an existing QuerySpace
. In this case, it is the caller's responsibility to ensure uniqueness. Params: - uid – The unique ID for the root collection query space.
- collectionPersister – The collection persister.
Throws: - IllegalStateException – if there is already a query space with the
specified unique ID.
See Also: Returns: the ExpandingCollectionQuerySpace
with the specified unique ID.
/**
* Create an {@link ExpandingCollectionQuerySpace} for a collection "return" with the
* specified unique ID.
*
* The unique ID should be generated using {@link #generateImplicitUid()},
*
* A unique suffix may be added to the unique ID for an existing {@link org.hibernate.loader.plan.spi.QuerySpace}.
* In this case, it is the caller's responsibility to ensure uniqueness.
*
* @param uid The unique ID for the root collection query space.
* @param collectionPersister The collection persister.
* @return the {@link ExpandingCollectionQuerySpace} with the specified unique ID.
* @throws IllegalStateException if there is already a query space with the
* specified unique ID.
*
* @see org.hibernate.loader.plan.spi.CollectionReturn
*/
ExpandingCollectionQuerySpace makeRootCollectionQuerySpace(
String uid,
CollectionPersister collectionPersister);
Create an ExpandingCollectionQuerySpace
for a collection (that is not a "return") with the specified unique ID. The unique ID should be generated using generateImplicitUid()
, A unique suffix may be added to the unique ID for an existing QuerySpace
. In this case, it is the caller's responsibility to ensure uniqueness. Params: - uid – The unique ID for the collection query space.
- collectionPersister – The collection persister.
- canJoinsBeRequired –
true
if joins added to the returned value
can be required joins; false
, otherwise.
Throws: - IllegalStateException – if there is already a query space with the
specified unique ID.
See Also: Returns: the ExpandingCollectionQuerySpace
with the specified unique ID.
/**
* Create an {@link ExpandingCollectionQuerySpace} for a collection (that is not a "return")
* with the specified unique ID.
*
* The unique ID should be generated using {@link #generateImplicitUid()},
*
* A unique suffix may be added to the unique ID for an existing {@link org.hibernate.loader.plan.spi.QuerySpace}.
* In this case, it is the caller's responsibility to ensure uniqueness.
*
* @param uid The unique ID for the collection query space.
* @param collectionPersister The collection persister.
* @param canJoinsBeRequired <code>true</code> if joins added to the returned value
* can be required joins; <code>false</code>, otherwise.
*
* @return the {@link ExpandingCollectionQuerySpace} with the specified unique ID.
* @throws IllegalStateException if there is already a query space with the
* specified unique ID.
*
* @see org.hibernate.loader.plan.spi.Join
*/
ExpandingCollectionQuerySpace makeCollectionQuerySpace(
String uid,
CollectionPersister collectionPersister,
boolean canJoinsBeRequired);
Create an ExpandingCompositeQuerySpace
for a composite with the specified unique ID. The unique ID should be generated using generateImplicitUid()
, A unique suffix may be added to the unique ID for an existing QuerySpace
. In this case, it is the caller's responsibility to ensure uniqueness. Params: - uid – The unique ID for the composite query space.
- compositePropertyMapping – The composite property mapping.
- canJoinsBeRequired –
true
if joins added to the returned value
can be required joins; false
, otherwise.
Throws: - IllegalStateException – if there is already a query space with the
specified unique ID.
See Also: Returns: the ExpandingCompositeQuerySpace
with the specified unique ID.
/**
* Create an {@link ExpandingCompositeQuerySpace} for a composite
* with the specified unique ID.
*
* The unique ID should be generated using {@link #generateImplicitUid()},
*
* A unique suffix may be added to the unique ID for an existing {@link org.hibernate.loader.plan.spi.QuerySpace}.
* In this case, it is the caller's responsibility to ensure uniqueness.
*
* @param uid The unique ID for the composite query space.
* @param compositePropertyMapping The composite property mapping.
* @param canJoinsBeRequired <code>true</code> if joins added to the returned value
* can be required joins; <code>false</code>, otherwise.
*
* @return the {@link ExpandingCompositeQuerySpace} with the specified unique ID.
* @throws IllegalStateException if there is already a query space with the
* specified unique ID.
*
* @see org.hibernate.loader.plan.spi.Join
*/
ExpandingCompositeQuerySpace makeCompositeQuerySpace(
String uid,
CompositePropertyMapping compositePropertyMapping,
boolean canJoinsBeRequired);
Gets the session factory.
Returns: The session factory.
/**
* Gets the session factory.
*
* @return The session factory.
*/
SessionFactoryImplementor getSessionFactory();
}