Package org.hibernate

Interface Interceptor

    • Method Detail

      • onLoad

        default boolean onLoad​(Object entity,
                               Object id,
                               Object[] state,
                               String[] propertyNames,
                               Type[] types)
                        throws CallbackException
        Called just before an object is initialized. The interceptor may change the state, which will be propagated to the persistent object. Note that when this method is called, entity will be an empty uninitialized instance of the class.
        Parameters:
        entity - The entity instance being loaded
        id - The identifier value being loaded
        state - The entity state (which will be pushed into the entity instance)
        propertyNames - The names of the entity properties, corresponding to the state.
        types - The types of the entity properties, corresponding to the state.
        Returns:
        true if the user modified the state in any way.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        API Note:
        The indexes across the state, propertyNames, and types arrays match.
      • onLoad

        @Deprecated(since="6.0")
        default boolean onLoad​(Object entity,
                               Serializable id,
                               Object[] state,
                               String[] propertyNames,
                               Type[] types)
                        throws CallbackException
        Called just before an object is initialized. The interceptor may change the state, which will be propagated to the persistent object. Note that when this method is called, entity will be an empty uninitialized instance of the class.
        Parameters:
        entity - The entity instance being loaded
        id - The identifier value being loaded
        state - The entity state (which will be pushed into the entity instance)
        propertyNames - The names of the entity properties, corresponding to the state.
        types - The types of the entity properties, corresponding to the state.
        Returns:
        true if the user modified the state in any way.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        API Note:
        The indexes across the state, propertyNames, and types arrays match.
      • onPersist

        default boolean onPersist​(Object entity,
                                  Object id,
                                  Object[] state,
                                  String[] propertyNames,
                                  Type[] types)
                           throws CallbackException
        Called before an object is made persistent by a stateful session.

        The interceptor may modify the state, which will be used for the SQL INSERT and propagated to the persistent object.

        Parameters:
        entity - The entity instance whose state is being inserted
        id - The identifier of the entity
        state - The state of the entity which will be inserted
        propertyNames - The names of the entity properties.
        types - The types of the entity properties
        Returns:
        true if the user modified the state in any way.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        See Also:
        Session.persist(Object), Session.merge(Object)
      • onRemove

        default void onRemove​(Object entity,
                              Object id,
                              Object[] state,
                              String[] propertyNames,
                              Type[] types)
                       throws CallbackException
        Called before an object is removed by a stateful session.

        It is not recommended that the interceptor modify the state.

        Parameters:
        entity - The entity instance being deleted
        id - The identifier of the entity
        state - The state of the entity
        propertyNames - The names of the entity properties.
        types - The types of the entity properties
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        See Also:
        Session.remove(Object)
      • onFlushDirty

        default boolean onFlushDirty​(Object entity,
                                     Object id,
                                     Object[] currentState,
                                     Object[] previousState,
                                     String[] propertyNames,
                                     Type[] types)
                              throws CallbackException
        Called when an object is detected to be dirty, during a flush. The interceptor may modify the detected currentState, which will be propagated to both the database and the persistent object. Note that not all flushes end in actual synchronization with the database, in which case the new currentState will be propagated to the object, but not necessarily (immediately) to the database. It is strongly recommended that the interceptor not modify the previousState.
        Parameters:
        entity - The entity instance detected as being dirty and being flushed
        id - The identifier of the entity
        currentState - The entity's current state
        previousState - The entity's previous (load time) state.
        propertyNames - The names of the entity properties
        types - The types of the entity properties
        Returns:
        true if the user modified the currentState in any way.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        See Also:
        Session.flush()
        API Note:
        The indexes across the currentState, previousState, propertyNames, and types arrays match.
      • onFlushDirty

        @Deprecated(since="6.0")
        default boolean onFlushDirty​(Object entity,
                                     Serializable id,
                                     Object[] currentState,
                                     Object[] previousState,
                                     String[] propertyNames,
                                     Type[] types)
                              throws CallbackException
        Called when an object is detected to be dirty, during a flush. The interceptor may modify the detected currentState, which will be propagated to both the database and the persistent object. Note that not all flushes end in actual synchronization with the database, in which case the new currentState will be propagated to the object, but not necessarily (immediately) to the database. It is strongly recommended that the interceptor not modify the previousState.
        Parameters:
        entity - The entity instance detected as being dirty and being flushed
        id - The identifier of the entity
        currentState - The entity's current state
        previousState - The entity's previous (load time) state.
        propertyNames - The names of the entity properties
        types - The types of the entity properties
        Returns:
        true if the user modified the currentState in any way.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        API Note:
        The indexes across the currentState, previousState, propertyNames, and types arrays match.
      • onSave

        @Deprecated(since="6.0")
        default boolean onSave​(Object entity,
                               Serializable id,
                               Object[] state,
                               String[] propertyNames,
                               Type[] types)
                        throws CallbackException
        Called before an object is made persistent by a stateful session.

        The interceptor may modify the state, which will be used for the SQL INSERT and propagated to the persistent object.

        Parameters:
        entity - The entity instance whose state is being inserted
        id - The identifier of the entity
        state - The state of the entity which will be inserted
        propertyNames - The names of the entity properties.
        types - The types of the entity properties
        Returns:
        true if the user modified the state in any way.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • onDelete

        @Deprecated(since="6.0")
        default void onDelete​(Object entity,
                              Serializable id,
                              Object[] state,
                              String[] propertyNames,
                              Type[] types)
                       throws CallbackException
        Called before an object is removed by a stateful session.

        It is not recommended that the interceptor modify the state.

        Parameters:
        entity - The entity instance being deleted
        id - The identifier of the entity
        state - The state of the entity
        propertyNames - The names of the entity properties.
        types - The types of the entity properties
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • onCollectionRecreate

        default void onCollectionRecreate​(Object collection,
                                          Object key)
                                   throws CallbackException
        Called before a collection is (re)created.
        Parameters:
        collection - The collection instance.
        key - The collection key value.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • onCollectionRemove

        default void onCollectionRemove​(Object collection,
                                        Object key)
                                 throws CallbackException
        Called before a collection is deleted.
        Parameters:
        collection - The collection instance.
        key - The collection key value.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • onCollectionUpdate

        default void onCollectionUpdate​(Object collection,
                                        Object key)
                                 throws CallbackException
        Called before a collection is updated.
        Parameters:
        collection - The collection instance.
        key - The collection key value.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • preFlush

        default void preFlush​(Iterator<Object> entities)
                       throws CallbackException
        Called before a flush.
        Parameters:
        entities - The entities to be flushed.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • postFlush

        default void postFlush​(Iterator<Object> entities)
                        throws CallbackException
        Called after a flush that actually ends in execution of the SQL statements required to synchronize in-memory state with the database.
        Parameters:
        entities - The entities that were flushed.
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • isTransient

        default Boolean isTransient​(Object entity)
        Called to distinguish between transient and detached entities. The return value determines the state of the entity with respect to the current session.
        • Boolean.TRUE - the entity is transient
        • Boolean.FALSE - the entity is detached
        • null - Hibernate uses the unsaved-value mapping and other heuristics to determine if the object is unsaved
        Parameters:
        entity - a transient or detached entity
        Returns:
        Boolean or null to choose default behaviour
      • findDirty

        @Deprecated(since="6.0")
        default int[] findDirty​(Object entity,
                                Serializable id,
                                Object[] currentState,
                                Object[] previousState,
                                String[] propertyNames,
                                Type[] types)
        Called from flush(). The return value determines whether the entity is updated
        • an array of property indices - the entity is dirty
        • an empty array - the entity is not dirty
        • null - use Hibernate's default dirty-checking algorithm
        Parameters:
        entity - The entity for which to find dirty properties.
        id - The identifier of the entity
        currentState - The current entity state as taken from the entity instance
        previousState - The state of the entity when it was last synchronized (generally when it was loaded)
        propertyNames - The names of the entity properties.
        types - The types of the entity properties
        Returns:
        array of dirty property indices or null to indicate Hibernate should perform default behaviour
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • findDirty

        default int[] findDirty​(Object entity,
                                Object id,
                                Object[] currentState,
                                Object[] previousState,
                                String[] propertyNames,
                                Type[] types)
        Called from flush(). The return value determines whether the entity is updated
        • an array of property indices - the entity is dirty
        • an empty array - the entity is not dirty
        • null - use Hibernate's default dirty-checking algorithm
        Parameters:
        entity - The entity for which to find dirty properties.
        id - The identifier of the entity
        currentState - The current entity state as taken from the entity instance
        previousState - The state of the entity when it was last synchronized (generally when it was loaded)
        propertyNames - The names of the entity properties.
        types - The types of the entity properties
        Returns:
        array of dirty property indices or null to indicate Hibernate should perform default behaviour
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • instantiate

        default Object instantiate​(String entityName,
                                   RepresentationMode representationMode,
                                   Object id)
                            throws CallbackException
        Instantiate the entity. Return null to indicate that Hibernate should use the default constructor of the class. The identifier property of the returned instance should be initialized with the given identifier.
        Throws:
        CallbackException
      • getEntityName

        default String getEntityName​(Object object)
                              throws CallbackException
        Get the entity name for a persistent or transient instance.
        Parameters:
        object - an entity instance
        Returns:
        the name of the entity
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        See Also:
        EntityNameResolver
      • getEntity

        default Object getEntity​(String entityName,
                                 Object id)
                          throws CallbackException
        Get a fully loaded entity instance that is cached externally.
        Parameters:
        entityName - the name of the entity
        id - the instance identifier
        Returns:
        a fully initialized entity
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
      • afterTransactionBegin

        default void afterTransactionBegin​(Transaction tx)
        Called when a Hibernate transaction is begun via the Hibernate Transaction API. Will not be called if transactions are being controlled via some other mechanism (CMT, for example).
        Parameters:
        tx - The Hibernate transaction facade object
      • beforeTransactionCompletion

        default void beforeTransactionCompletion​(Transaction tx)
        Called before a transaction is committed (but not before rollback).
        Parameters:
        tx - The Hibernate transaction facade object
      • afterTransactionCompletion

        default void afterTransactionCompletion​(Transaction tx)
        Called after a transaction is committed or rolled back.
        Parameters:
        tx - The Hibernate transaction facade object
      • onInsert

        default void onInsert​(Object entity,
                              Object id,
                              Object[] state,
                              String[] propertyNames,
                              Type[] propertyTypes)
        Called before a record is inserted by a StatelessSession.
        Parameters:
        entity - The entity instance being deleted
        id - The identifier of the entity
        state - The entity state
        propertyNames - The names of the entity properties.
        propertyTypes - The types of the entity properties
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        See Also:
        StatelessSession.insert(Object)
      • onUpdate

        default void onUpdate​(Object entity,
                              Object id,
                              Object[] state,
                              String[] propertyNames,
                              Type[] propertyTypes)
        Called before a record is updated by a StatelessSession.
        Parameters:
        entity - The entity instance being deleted
        id - The identifier of the entity
        state - The entity state
        propertyNames - The names of the entity properties.
        propertyTypes - The types of the entity properties
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        See Also:
        StatelessSession.update(Object)
      • onUpsert

        default void onUpsert​(Object entity,
                              Object id,
                              Object[] state,
                              String[] propertyNames,
                              Type[] propertyTypes)
        Called before a record is upserted by a StatelessSession.
        Parameters:
        entity - The entity instance being deleted
        id - The identifier of the entity
        state - The entity state
        propertyNames - The names of the entity properties.
        propertyTypes - The types of the entity properties
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        See Also:
        StatelessSession.upsert(String, Object)
      • onDelete

        default void onDelete​(Object entity,
                              Object id,
                              String[] propertyNames,
                              Type[] propertyTypes)
        Called before a record is deleted by a StatelessSession.
        Parameters:
        entity - The entity instance being deleted
        id - The identifier of the entity
        propertyNames - The names of the entity properties.
        propertyTypes - The types of the entity properties
        Throws:
        CallbackException - Thrown if the interceptor encounters any problems handling the callback.
        See Also:
        StatelessSession.delete(Object)