Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.hibernate
Interface Interceptor  view Interceptor download Interceptor.java

All Known Implementing Classes:
EmptyInterceptor

public interface Interceptor

Allows user code to inspect and/or change property values.

Inspection occurs before property values are written and after they are read from the database.

There might be a single instance of Interceptor for a SessionFactory, or a new instance might be specified for each Session. Whichever approach is used, the interceptor must be serializable if the Session is to be serializable. This means that SessionFactory-scoped interceptors should implement readResolve().

The Session may not be invoked from a callback (nor may a callback cause a collection or proxy to be lazily initialized).

Instead of implementing this interface directly, it is usually better to extend EmptyInterceptor and override only the callback methods of interest.


Method Summary
 void afterTransactionBegin(Transaction tx)
          Called when a Hibernate transaction is begun via the Hibernate Transaction API.
 void afterTransactionCompletion(Transaction tx)
          Called after a transaction is committed or rolled back.
 void beforeTransactionCompletion(Transaction tx)
          Called before a transaction is committed (but not before rollback).
 int[] findDirty(java.lang.Object entity, java.io.Serializable id, java.lang.Object[] currentState, java.lang.Object[] previousState, java.lang.String[] propertyNames, org.hibernate.type.Type[] types)
          Called from flush().
 java.lang.Object getEntity(java.lang.String entityName, java.io.Serializable id)
          Get a fully loaded entity instance that is cached externally
 java.lang.String getEntityName(java.lang.Object object)
          Get the entity name for a persistent or transient instance
 java.lang.Object instantiate(java.lang.String entityName, EntityMode entityMode, java.io.Serializable id)
          Instantiate the entity class.
 java.lang.Boolean isTransient(java.lang.Object entity)
          Called to distinguish between transient and detached entities.
 void onCollectionRecreate(java.lang.Object collection, java.io.Serializable key)
          Called before a collection is (re)created.
 void onCollectionRemove(java.lang.Object collection, java.io.Serializable key)
          Called before a collection is deleted.
 void onCollectionUpdate(java.lang.Object collection, java.io.Serializable key)
          Called before a collection is updated.
 void onDelete(java.lang.Object entity, java.io.Serializable id, java.lang.Object[] state, java.lang.String[] propertyNames, org.hibernate.type.Type[] types)
          Called before an object is deleted.
 boolean onFlushDirty(java.lang.Object entity, java.io.Serializable id, java.lang.Object[] currentState, java.lang.Object[] previousState, java.lang.String[] propertyNames, org.hibernate.type.Type[] types)
          Called when an object is detected to be dirty, during a flush.
 boolean onLoad(java.lang.Object entity, java.io.Serializable id, java.lang.Object[] state, java.lang.String[] propertyNames, org.hibernate.type.Type[] types)
          Called just before an object is initialized.
 java.lang.String onPrepareStatement(java.lang.String sql)
          Called when sql string is being prepared.
 boolean onSave(java.lang.Object entity, java.io.Serializable id, java.lang.Object[] state, java.lang.String[] propertyNames, org.hibernate.type.Type[] types)
          Called before an object is saved.
 void postFlush(java.util.Iterator entities)
          Called after a flush that actually ends in execution of the SQL statements required to synchronize in-memory state with the database.
 void preFlush(java.util.Iterator entities)
          Called before a flush
 

Method Detail

onLoad

public boolean onLoad(java.lang.Object entity,
                      java.io.Serializable id,
                      java.lang.Object[] state,
                      java.lang.String[] propertyNames,
                      org.hibernate.type.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.


onFlushDirty

public boolean onFlushDirty(java.lang.Object entity,
                            java.io.Serializable id,
                            java.lang.Object[] currentState,
                            java.lang.Object[] previousState,
                            java.lang.String[] propertyNames,
                            org.hibernate.type.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.


onSave

public boolean onSave(java.lang.Object entity,
                      java.io.Serializable id,
                      java.lang.Object[] state,
                      java.lang.String[] propertyNames,
                      org.hibernate.type.Type[] types)
               throws CallbackException
Called before an object is saved. The interceptor may modify the state, which will be used for the SQL INSERT and propagated to the persistent object.


onDelete

public void onDelete(java.lang.Object entity,
                     java.io.Serializable id,
                     java.lang.Object[] state,
                     java.lang.String[] propertyNames,
                     org.hibernate.type.Type[] types)
              throws CallbackException
Called before an object is deleted. It is not recommended that the interceptor modify the state.


onCollectionRecreate

public void onCollectionRecreate(java.lang.Object collection,
                                 java.io.Serializable key)
                          throws CallbackException
Called before a collection is (re)created.


onCollectionRemove

public void onCollectionRemove(java.lang.Object collection,
                               java.io.Serializable key)
                        throws CallbackException
Called before a collection is deleted.


onCollectionUpdate

public void onCollectionUpdate(java.lang.Object collection,
                               java.io.Serializable key)
                        throws CallbackException
Called before a collection is updated.


preFlush

public void preFlush(java.util.Iterator entities)
              throws CallbackException
Called before a flush


postFlush

public void postFlush(java.util.Iterator 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.


isTransient

public java.lang.Boolean isTransient(java.lang.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


findDirty

public int[] findDirty(java.lang.Object entity,
                       java.io.Serializable id,
                       java.lang.Object[] currentState,
                       java.lang.Object[] previousState,
                       java.lang.String[] propertyNames,
                       org.hibernate.type.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


instantiate

public java.lang.Object instantiate(java.lang.String entityName,
                                    EntityMode entityMode,
                                    java.io.Serializable id)
                             throws CallbackException
Instantiate the entity class. 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.


getEntityName

public java.lang.String getEntityName(java.lang.Object object)
                               throws CallbackException
Get the entity name for a persistent or transient instance


getEntity

public java.lang.Object getEntity(java.lang.String entityName,
                                  java.io.Serializable id)
                           throws CallbackException
Get a fully loaded entity instance that is cached externally


afterTransactionBegin

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


beforeTransactionCompletion

public void beforeTransactionCompletion(Transaction tx)
Called before a transaction is committed (but not before rollback).


afterTransactionCompletion

public void afterTransactionCompletion(Transaction tx)
Called after a transaction is committed or rolled back.


onPrepareStatement

public java.lang.String onPrepareStatement(java.lang.String sql)
Called when sql string is being prepared.