org.hibernate.persister.collection

Interface CollectionPersister

Known Subinterfaces:
QueryableCollection, SQLLoadableCollection
Known Implementing Classes:
AbstractCollectionPersister, BasicCollectionPersister, OneToManyPersister

public interface CollectionPersister

A strategy for persisting a collection role. Defines a contract between the persistence strategy and the actual persistent collection framework and session. Does not define operations that are required for querying collections, or loading by outer join.

Implements persistence of a collection instance while the instance is referenced in a particular role.

This class is highly coupled to the PersistentCollection hierarchy, since double dispatch is used to load and update collection elements.

May be considered an immutable view of the mapping object
Author:
Gavin King
See Also:
QueryableCollection, PersistentCollection

Method Summary

void
deleteRows(PersistentCollection collection, Serializable key, SessionImplementor session)
Delete the persistent state of any elements that were removed from the collection
boolean
elementExists(Serializable key, Object element, SessionImplementor session)
CollectionRegionAccessStrategy
getCacheAccessStrategy()
Get the cache
CacheEntryStructure
getCacheEntryStructure()
Get the cache structure
CollectionMetadata
getCollectionMetadata()
Serializable[]
getCollectionSpaces()
Get the "space" that holds the persistent state
CollectionType
getCollectionType()
Get the associated Type
Object
getElementByIndex(Serializable key, Object index, SessionImplementor session, Object owner)
Class
getElementClass()
Return the element class of an array, or null otherwise
String[]
getElementColumnAliases(String suffix)
Generates the collection's element column aliases, based on the given suffix.
String
getElementNodeName()
Type
getElementType()
Get the "element" type
SessionFactoryImplementor
getFactory()
String
getIdentifierColumnAlias(String suffix)
Generates the collection's identifier column aliases, based on the given suffix.
IdentifierGenerator
getIdentifierGenerator()
Get the surrogate key generation strategy (optional operation)
Type
getIdentifierType()
Get the type of the surrogate key
String[]
getIndexColumnAliases(String suffix)
Generates the collection's index column aliases, based on the given suffix.
String
getIndexNodeName()
Type
getIndexType()
Get the "index" type for a list or map (optional operation)
String[]
getKeyColumnAliases(String suffix)
Generates the collection's key column aliases, based on the given suffix.
Type
getKeyType()
Get the "key" type (the type of the foreign key)
String
getManyToManyFilterFragment(String alias, Map enabledFilters)
String
getNodeName()
EntityPersister
getOwnerEntityPersister()
Get the persister of the entity that "owns" this collection
String
getRole()
Get the name of this collection role (the fully qualified class name, extended by a "property path")
int
getSize(Serializable key, SessionImplementor session)
boolean
hasCache()
Is this collection role cacheable
boolean
hasIndex()
Is this an "indexed" collection? (list or map)
boolean
hasManyToManyOrdering()
boolean
hasOrdering()
Is this an ordered collection? (An ordered collection is ordered by the initialization operation, not by sorting that happens in memory, as in the case of a sorted collection.)
boolean
hasOrphanDelete()
Does this collection implement "orphan delete"?
boolean
indexExists(Serializable key, Object index, SessionImplementor session)
void
initialize(Serializable key, SessionImplementor session)
Initialize the given collection with the given key
void
insertRows(PersistentCollection collection, Serializable key, SessionImplementor session)
Insert the persistent state of any new collection elements
boolean
isAffectedByEnabledFilters(SessionImplementor session)
boolean
isArray()
Is this an array?
abstract boolean
isCascadeDeleteEnabled()
Is cascade delete handled by the database-level foreign key constraint definition?
boolean
isExtraLazy()
boolean
isInverse()
Is this collection "inverse", so state changes are not propogated to the database.
boolean
isLazy()
Is this collection lazyily initialized?
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
isMutable()
Can the elements of this collection change?
boolean
isOneToMany()
Is this a one-to-many association?
boolean
isPrimitiveArray()
Is this an array or primitive values?
boolean
isVersioned()
Does this collection cause version increment of the owning entity?
void
postInstantiate()
Object
readElement(ResultSet rs, Object owner, String[] columnAliases, SessionImplementor session)
Read the element from a row of the JDBC ResultSet
Object
readIdentifier(ResultSet rs, String columnAlias, SessionImplementor session)
Read the identifier from a row of the JDBC ResultSet
Object
readIndex(ResultSet rs, String[] columnAliases, SessionImplementor session)
Read the index from a row of the JDBC ResultSet
Object
readKey(ResultSet rs, String[] keyAliases, SessionImplementor session)
Read the key from a row of the JDBC ResultSet
void
recreate(PersistentCollection collection, Serializable key, SessionImplementor session)
(Re)create the collection's persistent state
void
remove(Serializable id, SessionImplementor session)
Completely remove the persistent state of the collection
void
updateRows(PersistentCollection collection, Serializable key, SessionImplementor session)
Update the persistent state of any elements that were modified

Method Details

deleteRows

public void deleteRows(PersistentCollection collection,
                       Serializable key,
                       SessionImplementor session)
            throws HibernateException
Delete the persistent state of any elements that were removed from the collection

elementExists

public boolean elementExists(Serializable key,
                             Object element,
                             SessionImplementor session)

getCacheAccessStrategy

public CollectionRegionAccessStrategy getCacheAccessStrategy()
Get the cache

getCacheEntryStructure

public CacheEntryStructure getCacheEntryStructure()
Get the cache structure

getCollectionMetadata

public CollectionMetadata getCollectionMetadata()

getCollectionSpaces

public Serializable[] getCollectionSpaces()
Get the "space" that holds the persistent state

getCollectionType

public CollectionType getCollectionType()
Get the associated Type

getElementByIndex

public Object getElementByIndex(Serializable key,
                                Object index,
                                SessionImplementor session,
                                Object owner)

getElementClass

public Class getElementClass()
Return the element class of an array, or null otherwise

getElementColumnAliases

public String[] getElementColumnAliases(String suffix)
Generates the collection's element column aliases, based on the given suffix.
Parameters:
suffix - The suffix to use in the element column alias generation.
Returns:
The key column aliases.

getElementNodeName

public String getElementNodeName()

getElementType

public Type getElementType()
Get the "element" type

getFactory

public SessionFactoryImplementor getFactory()

getIdentifierColumnAlias

public String getIdentifierColumnAlias(String suffix)
Generates the collection's identifier column aliases, based on the given suffix.
Parameters:
suffix - The suffix to use in the key column alias generation.
Returns:
The key column aliases.

getIdentifierGenerator

public IdentifierGenerator getIdentifierGenerator()
Get the surrogate key generation strategy (optional operation)

getIdentifierType

public Type getIdentifierType()
Get the type of the surrogate key

getIndexColumnAliases

public String[] getIndexColumnAliases(String suffix)
Generates the collection's index column aliases, based on the given suffix.
Parameters:
suffix - The suffix to use in the index column alias generation.
Returns:
The key column aliases, or null if not indexed.

getIndexNodeName

public String getIndexNodeName()

getIndexType

public Type getIndexType()
Get the "index" type for a list or map (optional operation)

getKeyColumnAliases

public String[] getKeyColumnAliases(String suffix)
Generates the collection's key column aliases, based on the given suffix.
Parameters:
suffix - The suffix to use in the key column alias generation.
Returns:
The key column aliases.

getKeyType

public Type getKeyType()
Get the "key" type (the type of the foreign key)

getManyToManyFilterFragment

public String getManyToManyFilterFragment(String alias,
                                          Map enabledFilters)

getNodeName

public String getNodeName()

getOwnerEntityPersister

public EntityPersister getOwnerEntityPersister()
Get the persister of the entity that "owns" this collection

getRole

public String getRole()
Get the name of this collection role (the fully qualified class name, extended by a "property path")

getSize

public int getSize(Serializable key,
                   SessionImplementor session)

hasCache

public boolean hasCache()
Is this collection role cacheable

hasIndex

public boolean hasIndex()
Is this an "indexed" collection? (list or map)

hasManyToManyOrdering

public boolean hasManyToManyOrdering()

hasOrdering

public boolean hasOrdering()
Is this an ordered collection? (An ordered collection is ordered by the initialization operation, not by sorting that happens in memory, as in the case of a sorted collection.)

hasOrphanDelete

public boolean hasOrphanDelete()
Does this collection implement "orphan delete"?

indexExists

public boolean indexExists(Serializable key,
                           Object index,
                           SessionImplementor session)

initialize

public void initialize(Serializable key,
                       SessionImplementor session)
            throws HibernateException
Initialize the given collection with the given key

insertRows

public void insertRows(PersistentCollection collection,
                       Serializable key,
                       SessionImplementor session)
            throws HibernateException
Insert the persistent state of any new collection elements

isAffectedByEnabledFilters

public boolean isAffectedByEnabledFilters(SessionImplementor session)

isArray

public boolean isArray()
Is this an array?

isCascadeDeleteEnabled

public abstract boolean isCascadeDeleteEnabled()
Is cascade delete handled by the database-level foreign key constraint definition?

isExtraLazy

public boolean isExtraLazy()

isInverse

public boolean isInverse()
Is this collection "inverse", so state changes are not propogated to the database.

isLazy

public boolean isLazy()
Is this collection lazyily initialized?

isManyToMany

public 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.

isMutable

public boolean isMutable()
Can the elements of this collection change?

isOneToMany

public boolean isOneToMany()
Is this a one-to-many association?

isPrimitiveArray

public boolean isPrimitiveArray()
Is this an array or primitive values?

isVersioned

public boolean isVersioned()
Does this collection cause version increment of the owning entity?

postInstantiate

public void postInstantiate()
            throws MappingException

readElement

public Object readElement(ResultSet rs,
                          Object owner,
                          String[] columnAliases,
                          SessionImplementor session)
            throws HibernateException,
                   SQLException
Read the element from a row of the JDBC ResultSet

readIdentifier

public Object readIdentifier(ResultSet rs,
                             String columnAlias,
                             SessionImplementor session)
            throws HibernateException,
                   SQLException
Read the identifier from a row of the JDBC ResultSet

readIndex

public Object readIndex(ResultSet rs,
                        String[] columnAliases,
                        SessionImplementor session)
            throws HibernateException,
                   SQLException
Read the index from a row of the JDBC ResultSet

readKey

public Object readKey(ResultSet rs,
                      String[] keyAliases,
                      SessionImplementor session)
            throws HibernateException,
                   SQLException
Read the key from a row of the JDBC ResultSet

recreate

public void recreate(PersistentCollection collection,
                     Serializable key,
                     SessionImplementor session)
            throws HibernateException
(Re)create the collection's persistent state

remove

public void remove(Serializable id,
                   SessionImplementor session)
            throws HibernateException
Completely remove the persistent state of the collection

updateRows

public void updateRows(PersistentCollection collection,
                       Serializable key,
                       SessionImplementor session)
            throws HibernateException
Update the persistent state of any elements that were modified