org.hibernate.persister.collection
Class BasicCollectionPersister

java.lang.Object
  extended by org.hibernate.persister.collection.AbstractCollectionPersister
      extended by org.hibernate.persister.collection.BasicCollectionPersister
All Implemented Interfaces:
CollectionMetadata, CollectionPersister, QueryableCollection, SQLLoadableCollection, Joinable, PropertyMapping

public class BasicCollectionPersister
extends AbstractCollectionPersister

Collection persister for collections of values and many-to-many associations.

Author:
Gavin King

Field Summary
 
Fields inherited from class org.hibernate.persister.collection.AbstractCollectionPersister
batchSize, elementColumnAliases, elementColumnIsInPrimaryKey, elementColumnIsSettable, elementColumnNames, elementFormulas, elementFormulaTemplates, elementIsPureFormula, elementType, hasIdentifier, hasIndex, hasWhere, identifierColumnName, indexColumnAliases, indexColumnIsSettable, indexColumnNames, indexContainsFormula, indexFormulas, indexFormulaTemplates, keyColumnAliases, keyColumnNames, qualifiedTableName, sqlWhereString
 
Constructor Summary
BasicCollectionPersister(Collection collection, CacheConcurrencyStrategy cache, Configuration cfg, SessionFactoryImplementor factory)
           
 
Method Summary
 boolean consumesCollectionAlias()
          Very, very, very ugly...
 boolean consumesEntityAlias()
          Very, very, very ugly...
protected  CollectionInitializer createCollectionInitializer(Map enabledFilters)
          Create the CollectionLoader
protected  CollectionInitializer createSubselectInitializer(SubselectFetch subselect, SessionImplementor session)
           
protected  int doUpdateRows(Serializable id, PersistentCollection collection, SessionImplementor session)
           
 String fromJoinFragment(String alias, boolean innerJoin, boolean includeSubclasses)
          Get the from clause part of any joins (optional operation)
protected  String generateDeleteRowString()
          Generate the SQL DELETE that deletes a particular row
protected  String generateDeleteString()
          Generate the SQL DELETE that deletes all rows
protected  String generateInsertRowString()
          Generate the SQL INSERT that creates a new row
protected  String generateUpdateRowString()
          Generate the SQL UPDATE that updates a row
 boolean isCascadeDeleteEnabled()
          Is cascade delete handled by the database-level foreign key constraint definition?
 boolean isManyToMany()
          Is this a many-to-many association? Note that this is mainly a convenience feature as the single persister does not conatin all the information needed to handle a many-to-many itself, as internally it is looked at as two many-to-ones.
 boolean isOneToMany()
          Is this a one-to-many association?
 String selectFragment(Joinable rhs, String rhsAlias, String lhsAlias, String entitySuffix, String collectionSuffix, boolean includeCollectionColumns)
          All columns to select, when loading.
 String whereJoinFragment(String alias, boolean innerJoin, boolean includeSubclasses)
          Get the where clause part of any joins (optional operation)
 
Methods inherited from class org.hibernate.persister.collection.AbstractCollectionPersister
appendElementColumns, appendIdentifierColumns, appendIndexColumns, decrementIndexByBase, deleteRows, elementExists, filterFragment, filterFragment, generateDetectRowByElementString, generateDetectRowByIndexString, generateSelectFragment, generateSelectRowByIndexString, generateSelectSizeString, getAppropriateInitializer, getCache, getCacheEntryStructure, getCollectionMetadata, getCollectionPropertyColumnAliases, getCollectionSpaces, getCollectionType, getDeleteAllCheckStyle, getDeleteCheckStyle, getDialect, getElementByIndex, getElementClass, getElementColumnAliases, getElementColumnNames, getElementColumnNames, getElementNodeName, getElementPersister, getElementType, getFactory, getFetchMode, getIdentifierColumnAlias, getIdentifierColumnName, getIdentifierGenerator, getIdentifierType, getIndexColumnAliases, getIndexColumnNames, getIndexColumnNames, getIndexFormulas, getIndexNodeName, getIndexType, getInsertCheckStyle, getKeyColumnAliases, getKeyColumnNames, getKeyType, getManyToManyFilterFragment, getManyToManyOrderByString, getName, getNodeName, getOwnerEntityName, getOwnerEntityPersister, getRole, getSize, getSQLDeleteRowString, getSQLDeleteString, getSQLExceptionConverter, getSQLInsertRowString, getSQLOrderByString, getSQLUpdateRowString, getSQLWhereString, getTableName, getType, getUpdateCheckStyle, hasCache, hasIndex, hasManyToManyOrdering, hasOrdering, hasOrphanDelete, hasWhere, incrementIndexByBase, indexExists, initCollectionPropertyMap, initialize, insertRows, isAffectedByEnabledFilters, isArray, isCollection, isDeleteAllCallable, isDeleteCallable, isExtraLazy, isInsertCallable, isInverse, isLazy, isMutable, isPrimitiveArray, isRowDeleteEnabled, isRowInsertEnabled, isSubselectLoadable, isUpdateCallable, isVersioned, logStaticSQL, oneToManyFilterFragment, postInstantiate, readElement, readIdentifier, readIndex, readKey, recreate, remove, selectFragment, toColumns, toColumns, toString, toType, updateRows, writeElement, writeElementToWhere, writeIdentifier, writeIndex, writeIndexToWhere, writeKey
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BasicCollectionPersister

public BasicCollectionPersister(Collection collection,
                                CacheConcurrencyStrategy cache,
                                Configuration cfg,
                                SessionFactoryImplementor factory)
                         throws MappingException,
                                CacheException
Throws:
MappingException
CacheException
Method Detail

isCascadeDeleteEnabled

public boolean isCascadeDeleteEnabled()
Description copied from interface: CollectionPersister
Is cascade delete handled by the database-level foreign key constraint definition?


generateDeleteString

protected String generateDeleteString()
Generate the SQL DELETE that deletes all rows

Specified by:
generateDeleteString in class AbstractCollectionPersister

generateInsertRowString

protected String generateInsertRowString()
Generate the SQL INSERT that creates a new row

Specified by:
generateInsertRowString in class AbstractCollectionPersister

generateUpdateRowString

protected String generateUpdateRowString()
Generate the SQL UPDATE that updates a row

Specified by:
generateUpdateRowString in class AbstractCollectionPersister

generateDeleteRowString

protected String generateDeleteRowString()
Generate the SQL DELETE that deletes a particular row

Specified by:
generateDeleteRowString in class AbstractCollectionPersister

consumesEntityAlias

public boolean consumesEntityAlias()
Description copied from interface: Joinable
Very, very, very ugly...

Returns:
Does this persister "consume" entity column aliases in the result set?

consumesCollectionAlias

public boolean consumesCollectionAlias()
Description copied from interface: Joinable
Very, very, very ugly...

Returns:
Does this persister "consume" collection column aliases in the result set?

isOneToMany

public boolean isOneToMany()
Description copied from interface: CollectionPersister
Is this a one-to-many association?


isManyToMany

public boolean isManyToMany()
Description copied from interface: CollectionPersister
Is this a many-to-many association? Note that this is mainly a convenience feature as the single persister does not conatin all the information needed to handle a many-to-many itself, as internally it is looked at as two many-to-ones.

Specified by:
isManyToMany in interface CollectionPersister
Specified by:
isManyToMany in class AbstractCollectionPersister

doUpdateRows

protected int doUpdateRows(Serializable id,
                           PersistentCollection collection,
                           SessionImplementor session)
                    throws HibernateException
Specified by:
doUpdateRows in class AbstractCollectionPersister
Throws:
HibernateException

selectFragment

public String selectFragment(Joinable rhs,
                             String rhsAlias,
                             String lhsAlias,
                             String entitySuffix,
                             String collectionSuffix,
                             boolean includeCollectionColumns)
Description copied from interface: Joinable
All columns to select, when loading.


createCollectionInitializer

protected CollectionInitializer createCollectionInitializer(Map enabledFilters)
                                                     throws MappingException
Create the CollectionLoader

Specified by:
createCollectionInitializer in class AbstractCollectionPersister
Throws:
MappingException
See Also:
BasicCollectionLoader

fromJoinFragment

public String fromJoinFragment(String alias,
                               boolean innerJoin,
                               boolean includeSubclasses)
Description copied from interface: Joinable
Get the from clause part of any joins (optional operation)


whereJoinFragment

public String whereJoinFragment(String alias,
                                boolean innerJoin,
                                boolean includeSubclasses)
Description copied from interface: Joinable
Get the where clause part of any joins (optional operation)


createSubselectInitializer

protected CollectionInitializer createSubselectInitializer(SubselectFetch subselect,
                                                           SessionImplementor session)
Specified by:
createSubselectInitializer in class AbstractCollectionPersister