Entity Listeners

Entity listeners are classes that can generically intercept entity callback events. They are not entity classes themselves, but they can be attached to an entity class through a binding annotation or XML. You can assign methods on an entity listener class to intercept a particular lifecycle event. These methods return void and take one Object parameter that is the entity instance on which the event is being triggered. The method is annotated with the callback in which it is interested:

public class Auditor {

   @PostPersist void postInsert(final Object entity)
   {
      System.out.println("Inserted entity: " + entity.getClass().getName( ));
   }

   @PostLoad void postLoad(final Object entity)
   {
      System.out.println("Loaded entity: " + entity.getClass().getName( ));
   }

}

The entity listener class must have a public no-arg constructor. It can be applied to an entity class by using the @javax.persistence.EntityListeners annotation:

package javax.persistence;

@Target(TYPE) @Retention(RUNTIME)
public @interface EntityListeners
{
   Class[] value();
}

You may specify one or more entity listeners that intercept the callback events of an entity class:

@Entity
@EntityListeners  ({Auditor.class})
public class EntityListenerEmployee
{
  ...
}

By using the @EntityListeners annotation on the EntityListenerEmployee entity class, any callback methods within those entity listener classes will be invoked whenever EntityListenerEmployee entity instances interact with a persistence context.

Default Entity Listeners ...

Get Enterprise JavaBeans 3.1, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.