org.hibernate.persister.collection
Interface CollectionPersister

All Known Subinterfaces:
QueryableCollection, SQLLoadableCollection
All 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?
 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 Detail

initialize

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

Throws:
HibernateException

hasCache

boolean hasCache()
Is this collection role cacheable


getCacheAccessStrategy

CollectionRegionAccessStrategy getCacheAccessStrategy()
Get the cache


getCacheEntryStructure

CacheEntryStructure getCacheEntryStructure()
Get the cache structure


getCollectionType

CollectionType getCollectionType()
Get the associated Type


getKeyType

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


getIndexType

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


getElementType

Type getElementType()
Get the "element" type


getElementClass

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


readKey

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

Throws:
HibernateException
SQLException

readElement

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

Throws:
HibernateException
SQLException

readIndex

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

Throws:
HibernateException
SQLException

readIdentifier

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

Throws:
HibernateException
SQLException

isPrimitiveArray

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


isArray

boolean isArray()
Is this an array?


isOneToMany

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


isManyToMany

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.


getManyToManyFilterFragment

String getManyToManyFilterFragment(String alias,
                                   Map enabledFilters)

hasIndex

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


isLazy

boolean isLazy()
Is this collection lazyily initialized?


isInverse

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


remove

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

Throws:
HibernateException

recreate

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

Throws:
HibernateException

deleteRows

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

Throws:
HibernateException

updateRows

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

Throws:
HibernateException

insertRows

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

Throws:
HibernateException

getRole

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


getOwnerEntityPersister

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


getIdentifierGenerator

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


getIdentifierType

Type getIdentifierType()
Get the type of the surrogate key


hasOrphanDelete

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


hasOrdering

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


hasManyToManyOrdering

boolean hasManyToManyOrdering()

getCollectionSpaces

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


getCollectionMetadata

CollectionMetadata getCollectionMetadata()

isCascadeDeleteEnabled

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


isVersioned

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


isMutable

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


getNodeName

String getNodeName()

getElementNodeName

String getElementNodeName()

getIndexNodeName

String getIndexNodeName()

postInstantiate

void postInstantiate()
                     throws MappingException
Throws:
MappingException

getFactory

SessionFactoryImplementor getFactory()

isAffectedByEnabledFilters

boolean isAffectedByEnabledFilters(SessionImplementor session)

getKeyColumnAliases

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.

getIndexColumnAliases

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.

getElementColumnAliases

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.

getIdentifierColumnAlias

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.

isExtraLazy

boolean isExtraLazy()

getSize

int getSize(Serializable key,
            SessionImplementor session)

indexExists

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

elementExists

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

getElementByIndex

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


Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.