Interface PersistenceContext

All Known Implementing Classes:
StatefulPersistenceContext

public interface PersistenceContext
Holds the state of the persistence context, including the first-level cache, entries, snapshots, proxies, etc.
  • Method Details

    • isStateless

      boolean isStateless()
    • getSession

      SessionImplementor getSession()
      Get the session to which this persistence context is bound.
      Returns:
      The session.
    • getLoadContexts

      LoadContexts getLoadContexts()
      Retrieve this persistence context's managed load context.
      Returns:
      The load context
    • addUnownedCollection

      void addUnownedCollection(CollectionKey key, PersistentCollection collection)
      Add a collection which has no owner loaded
    • useUnownedCollection

      PersistentCollection useUnownedCollection(CollectionKey key)
      Get and remove a collection whose owner is not yet loaded, when its owner is being loaded
    • getBatchFetchQueue

      BatchFetchQueue getBatchFetchQueue()
      Get the BatchFetchQueue, instantiating one if necessary.
    • clear

      void clear()
      Clear the state of the persistence context
    • hasNonReadOnlyEntities

      boolean hasNonReadOnlyEntities()
      Returns:
      false if we know for certain that all the entities are read-only
    • setEntryStatus

      void setEntryStatus(EntityEntry entry, Status status)
      Set the status of an entry
    • afterTransactionCompletion

      void afterTransactionCompletion()
      Called after transactions end
    • getDatabaseSnapshot

      Object[] getDatabaseSnapshot(Serializable id, EntityPersister persister) throws HibernateException
      Get the current state of the entity as known to the underlying database, or null if there is no corresponding row
      Throws:
      HibernateException
    • getCachedDatabaseSnapshot

      Object[] getCachedDatabaseSnapshot(EntityKey key)
    • getNaturalIdSnapshot

      Object[] getNaturalIdSnapshot(Serializable id, EntityPersister persister) throws HibernateException
      Get the values of the natural id fields as known to the underlying database, or null if the entity has no natural id or there is no corresponding row.
      Throws:
      HibernateException
    • addEntity

      void addEntity(EntityKey key, Object entity)
      Add a canonical mapping from entity key to entity instance
    • getEntity

      Object getEntity(EntityKey key)
      Get the entity instance associated with the given EntityKey
    • containsEntity

      boolean containsEntity(EntityKey key)
      Is there an entity with the given key in the persistence context
    • removeEntity

      Object removeEntity(EntityKey key)
      Remove an entity from the session cache, also clear up other state associated with the entity, all except for the EntityEntry
    • getEntity

      Object getEntity(EntityUniqueKey euk)
      Get an entity cached by unique key
    • addEntity

      void addEntity(EntityUniqueKey euk, Object entity)
      Add an entity to the cache by unique key
    • getEntry

      EntityEntry getEntry(Object entity)
      Retrieve the EntityEntry representation of the given entity.
      Parameters:
      entity - The entity for which to locate the EntityEntry.
      Returns:
      The EntityEntry for the given entity.
    • removeEntry

      EntityEntry removeEntry(Object entity)
      Remove an entity entry from the session cache
    • isEntryFor

      boolean isEntryFor(Object entity)
      Is there an EntityEntry for this instance?
    • getCollectionEntry

      CollectionEntry getCollectionEntry(PersistentCollection coll)
      Get the collection entry for a persistent collection
    • addEntity

      EntityEntry addEntity(Object entity, Status status, Object[] loadedState, EntityKey entityKey, Object version, LockMode lockMode, boolean existsInDatabase, EntityPersister persister, boolean disableVersionIncrement, boolean lazyPropertiesAreUnfetched)
      Adds an entity to the internal caches.
    • addEntry

      EntityEntry addEntry(Object entity, Status status, Object[] loadedState, Object rowId, Serializable id, Object version, LockMode lockMode, boolean existsInDatabase, EntityPersister persister, boolean disableVersionIncrement, boolean lazyPropertiesAreUnfetched)
      Generates an appropriate EntityEntry instance and adds it to the event source's internal caches.
    • containsCollection

      boolean containsCollection(PersistentCollection collection)
      Is the given collection associated with this persistence context?
    • containsProxy

      boolean containsProxy(Object proxy)
      Is the given proxy associated with this persistence context?
    • reassociateIfUninitializedProxy

      boolean reassociateIfUninitializedProxy(Object value) throws MappingException
      Takes the given object and, if it represents a proxy, reassociates it with this event source.
      Parameters:
      value - The possible proxy to be reassociated.
      Returns:
      Whether the passed value represented an actual proxy which got initialized.
      Throws:
      MappingException
    • reassociateProxy

      void reassociateProxy(Object value, Serializable id) throws MappingException
      If a deleted entity instance is re-saved, and it has a proxy, we need to reset the identifier of the proxy
      Throws:
      MappingException
    • unproxy

      Object unproxy(Object maybeProxy) throws HibernateException
      Get the entity instance underlying the given proxy, throwing an exception if the proxy is uninitialized. If the given object is not a proxy, simply return the argument.
      Throws:
      HibernateException
    • unproxyAndReassociate

      Object unproxyAndReassociate(Object maybeProxy) throws HibernateException
      Possibly unproxy the given reference and reassociate it with the current session.
      Parameters:
      maybeProxy - The reference to be unproxied if it currently represents a proxy.
      Returns:
      The unproxied instance.
      Throws:
      HibernateException
    • checkUniqueness

      void checkUniqueness(EntityKey key, Object object) throws HibernateException
      Attempts to check whether the given key represents an entity already loaded within the current session.
      Parameters:
      object - The entity reference against which to perform the uniqueness check.
      Throws:
      HibernateException
    • narrowProxy

      Object narrowProxy(Object proxy, EntityPersister persister, EntityKey key, Object object) throws HibernateException
      If the existing proxy is insufficiently "narrow" (derived), instantiate a new proxy and overwrite the registration of the old one. This breaks == and occurs only for "class" proxies rather than "interface" proxies. Also init the proxy to point to the given target implementation if necessary.
      Parameters:
      proxy - The proxy instance to be narrowed.
      persister - The persister for the proxied entity.
      key - The internal cache key for the proxied entity.
      object - (optional) the actual proxied entity instance.
      Returns:
      An appropriately narrowed instance.
      Throws:
      HibernateException
    • proxyFor

      Object proxyFor(EntityPersister persister, EntityKey key, Object impl) throws HibernateException
      Return the existing proxy associated with the given EntityKey, or the third argument (the entity associated with the key) if no proxy exists. Init the proxy to the target implementation, if necessary.
      Throws:
      HibernateException
    • proxyFor

      Object proxyFor(Object impl) throws HibernateException
      Return the existing proxy associated with the given EntityKey, or the argument (the entity associated with the key) if no proxy exists. (slower than the form above)
      Throws:
      HibernateException
    • getCollectionOwner

      Object getCollectionOwner(Serializable key, CollectionPersister collectionPersister) throws MappingException
      Get the entity that owns this persistent collection
      Throws:
      MappingException
    • getLoadedCollectionOwnerOrNull

      Object getLoadedCollectionOwnerOrNull(PersistentCollection collection)
      Get the entity that owned this persistent collection when it was loaded
      Parameters:
      collection - The persistent collection
      Returns:
      the owner if its entity ID is available from the collection's loaded key and the owner entity is in the persistence context; otherwise, returns null
    • getLoadedCollectionOwnerIdOrNull

      Serializable getLoadedCollectionOwnerIdOrNull(PersistentCollection collection)
      Get the ID for the entity that owned this persistent collection when it was loaded
      Parameters:
      collection - The persistent collection
      Returns:
      the owner ID if available from the collection's loaded key; otherwise, returns null
    • addUninitializedCollection

      void addUninitializedCollection(CollectionPersister persister, PersistentCollection collection, Serializable id)
      add a collection we just loaded up (still needs initializing)
    • addUninitializedDetachedCollection

      void addUninitializedDetachedCollection(CollectionPersister persister, PersistentCollection collection)
      add a detached uninitialized collection
    • addNewCollection

      void addNewCollection(CollectionPersister persister, PersistentCollection collection) throws HibernateException
      Add a new collection (ie. a newly created one, just instantiated by the application, with no database state or snapshot)
      Parameters:
      collection - The collection to be associated with the persistence context
      Throws:
      HibernateException
    • addInitializedDetachedCollection

      void addInitializedDetachedCollection(CollectionPersister collectionPersister, PersistentCollection collection) throws HibernateException
      add an (initialized) collection that was created by another session and passed into update() (ie. one with a snapshot and existing state on the database)
      Throws:
      HibernateException
    • addInitializedCollection

      CollectionEntry addInitializedCollection(CollectionPersister persister, PersistentCollection collection, Serializable id) throws HibernateException
      add a collection we just pulled out of the cache (does not need initializing)
      Throws:
      HibernateException
    • getCollection

      PersistentCollection getCollection(CollectionKey collectionKey)
      Get the collection instance associated with the CollectionKey
    • addNonLazyCollection

      void addNonLazyCollection(PersistentCollection collection)
      Register a collection for non-lazy loading at the end of the two-phase load
    • initializeNonLazyCollections

      void initializeNonLazyCollections() throws HibernateException
      Force initialization of all non-lazy collections encountered during the current two-phase load (actually, this is a no-op, unless this is the "outermost" load)
      Throws:
      HibernateException
    • getCollectionHolder

      PersistentCollection getCollectionHolder(Object array)
      Get the PersistentCollection object for an array
    • addCollectionHolder

      void addCollectionHolder(PersistentCollection holder)
      Register a PersistentCollection object for an array. Associates a holder with an array - MUST be called after loading array, since the array instance is not created until endLoad().
    • removeCollectionHolder

      PersistentCollection removeCollectionHolder(Object array)
      Remove the mapping of collection to holder during eviction of the owning entity
    • getSnapshot

      Get the snapshot of the pre-flush collection state
    • getCollectionEntryOrNull

      CollectionEntry getCollectionEntryOrNull(Object collection)
      Get the collection entry for a collection passed to filter, which might be a collection wrapper, an array, or an unwrapped collection. Return null if there is no entry.
    • getProxy

      Object getProxy(EntityKey key)
      Get an existing proxy by key
    • addProxy

      void addProxy(EntityKey key, Object proxy)
      Add a proxy to the session cache
    • removeProxy

      Object removeProxy(EntityKey key)
      Remove a proxy from the session cache
    • getNullifiableEntityKeys

      HashSet getNullifiableEntityKeys()
      Retrieve the set of EntityKeys representing nullifiable references
    • getEntitiesByKey

      Map getEntitiesByKey()
      Get the mapping from key value to entity instance
    • getEntityEntries

      Map getEntityEntries()
      Get the mapping from entity instance to entity entry
    • getCollectionEntries

      Map getCollectionEntries()
      Get the mapping from collection instance to collection entry
    • getCollectionsByKey

      Map getCollectionsByKey()
      Get the mapping from collection key to collection instance
    • getCascadeLevel

      int getCascadeLevel()
      How deep are we cascaded?
    • incrementCascadeLevel

      int incrementCascadeLevel()
      Called before cascading
    • decrementCascadeLevel

      int decrementCascadeLevel()
      Called after cascading
    • isFlushing

      boolean isFlushing()
      Is a flush cycle currently in process?
    • setFlushing

      void setFlushing(boolean flushing)
      Called before and after the flushcycle
    • beforeLoad

      void beforeLoad()
      Call this before beginning a two-phase load
    • afterLoad

      void afterLoad()
      Call this after finishing a two-phase load
    • isLoadFinished

      boolean isLoadFinished()
      Is in a two-phase load?
    • toString

      String toString()
      Returns a string representation of the object.
      Overrides:
      toString in class Object
      Returns:
      a string representation of the object.
    • getOwnerId

      Serializable getOwnerId(String entity, String property, Object childObject, Map mergeMap)
      Search the persistence context for an owner for the child object, given a collection role
    • getIndexInOwner

      Object getIndexInOwner(String entity, String property, Object childObject, Map mergeMap)
      Search the persistence context for an index of the child object, given a collection role
    • addNullProperty

      void addNullProperty(EntityKey ownerKey, String propertyName)
      Record the fact that the association belonging to the keyed entity is null.
    • isPropertyNull

      boolean isPropertyNull(EntityKey ownerKey, String propertyName)
      Is the association property belonging to the keyed entity null?
    • isDefaultReadOnly

      boolean isDefaultReadOnly()
      Will entities and proxies that are loaded into this persistence context be made read-only by default? To determine the read-only/modifiable setting for a particular entity or proxy:
      Returns:
      true, loaded entities/proxies will be made read-only by default; false, loaded entities/proxies will be made modifiable by default.
      See Also:
    • setDefaultReadOnly

      void setDefaultReadOnly(boolean readOnly)
      Change the default for entities and proxies loaded into this persistence context from modifiable to read-only mode, or from modifiable to read-only mode. Read-only entities are not dirty-checked and snapshots of persistent state are not maintained. Read-only entities can be modified, but changes are not persisted. When a proxy is initialized, the loaded entity will have the same read-only/modifiable setting as the uninitialized proxy has, regardless of the persistence context's current setting. To change the read-only/modifiable setting for a particular entity or proxy that is already in this session: + * @see PersistenceContext#setReadOnly(Object,boolean)
      Parameters:
      readOnly - true, the default for loaded entities/proxies is read-only; false, the default for loaded entities/proxies is modifiable
      See Also:
    • isReadOnly

      boolean isReadOnly(Object entityOrProxy)
      Is the entity or proxy read-only? To get the default read-only/modifiable setting used for entities and proxies that are loaded into the session:
      Parameters:
      entityOrProxy -
      Returns:
      true, the object is read-only; false, the object is modifiable.
      See Also:
    • setReadOnly

      void setReadOnly(Object entityOrProxy, boolean readOnly)
      Set an unmodified persistent object to read-only mode, or a read-only object to modifiable mode. Read-only entities are not dirty-checked and snapshots of persistent state are not maintained. Read-only entities can be modified, but changes are not persisted. When a proxy is initialized, the loaded entity will have the same read-only/modifiable setting as the uninitialized proxy has, regardless of the session's current setting. If the entity or proxy already has the specified read-only/modifiable setting, then this method does nothing. To set the default read-only/modifiable setting used for entities and proxies that are loaded into this persistence context:
      Parameters:
      entityOrProxy - , an entity or HibernateProxy
      readOnly - if true, the entity or proxy is made read-only; if false, the entity or proxy is made modifiable.
      See Also:
    • replaceDelayedEntityIdentityInsertKeys

      void replaceDelayedEntityIdentityInsertKeys(EntityKey oldKey, Serializable generatedId)
    • addChildParent

      void addChildParent(Object parent, Object child)
      Put child/parent relation to cache for cascading op
      Parameters:
      parent -
      child -
    • removeChildParent

      void removeChildParent(Object child)
      Remove child/parent relation from cache
      Parameters:
      child -
    • registerInsertedKey

      void registerInsertedKey(EntityPersister persister, Serializable id)
      Register keys inserted during the current transaction
      Parameters:
      persister - The entity persister
      id - The id
    • wasInsertedDuringTransaction

      boolean wasInsertedDuringTransaction(EntityPersister persister, Serializable id)
      Allows callers to check to see if the identified entity was inserted during the current transaction.
      Parameters:
      persister - The entity persister
      id - The id
      Returns:
      True if inserted during this transaction, false otherwise.