Interface CollectionPersister

  • All Superinterfaces:
    CollectionDefinition
    All Known Subinterfaces:
    QueryableCollection, SQLLoadableCollection
    All Known Implementing Classes:
    AbstractCollectionPersister, BasicCollectionPersister, OneToManyPersister

    public interface CollectionPersister
    extends CollectionDefinition
    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

    Unless a customer PersisterFactory is used, it is expected that implementations of CollectionDefinition define a constructor accepting the following arguments:

    1. Collection - The metadata about the collection to be handled by the persister
    2. CollectionDataAccess - the second level caching strategy for this collection
    3. PersisterCreationContext - access to additional information useful while constructing the persister.
    See Also:
    QueryableCollection, PersistentCollection
    • Method Detail

      • hasCache

        boolean hasCache()
        Is this collection role cacheable
      • 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

        java.lang.Class getElementClass()
        Return the element class of an array, or null otherwise
      • 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 contain all the information needed to handle a many-to-many itself, as internally it is looked at as two many-to-ones.
      • getManyToManyFilterFragment

        java.lang.String getManyToManyFilterFragment​(java.lang.String alias,
                                                     java.util.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 propagated to the database.
      • getRole

        java.lang.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

        java.io.Serializable[] getCollectionSpaces()
        Get the "space" that holds the persistent state
      • 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?
      • getKeyColumnAliases

        java.lang.String[] getKeyColumnAliases​(java.lang.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

        java.lang.String[] getIndexColumnAliases​(java.lang.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

        java.lang.String[] getElementColumnAliases​(java.lang.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

        java.lang.String getIdentifierColumnAlias​(java.lang.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()
      • getElementByIndex

        java.lang.Object getElementByIndex​(java.io.Serializable key,
                                           java.lang.Object index,
                                           SharedSessionContractImplementor session,
                                           java.lang.Object owner)
      • getBatchSize

        int getBatchSize()
      • getMappedByProperty

        java.lang.String getMappedByProperty()
        Returns:
        the name of the property this collection is mapped by