Eventos en Hibernate

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Escuchan eventos de Hibernate( una lectura, un borrado, una insercción, una actualización, etc..).

Un ejemplo típico puede ser un sistema de auditoría de actividad que deje constancia de todas las transacciones que se producen en la base de datos, registrando que usuario ha hecho qué cosa.

La clase debe implementar la la interfaz del evento que queremos monitorizar:

  • LoadEventLister → lectura
  • DeleteEventListener → borrado
  • PersistEventListener → insercción
  • LockEventListener
  • MergeEventListener
  • RefreshEventListener
  • ReplicateEventListener
  • SaveOrUpdateEventListener
  • DirtyCheckEventListener
  • EvictEventListener
  • FlushEventListener
public class MyLoadListener implements LoadEventListener {
    // Este método ha sido definido por la LoadEventListener interface
    public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)
            throws HibernateException {
        System.out.println("Mostramos la entidad consultada utilizando un listener" + event.getEntityClassName());
        if ( event.getEntityClassName().equals("Libro")) {
        	// event.getEntityId() ) ) {
        }
    }
}

hibernate.cfg.xml:

<event type="load">
        <listener class="com.hibernate.listeners.MyLoadListener"/>
</event>

El evento Load está vinculado a la sesión de Hibernate, por tanto no se va a disparar en consultas con HQL o criteria; sólo cuando consultemos usando una sintaxis similar a esta:

 session.get(Alumno.class, 3);

Las interfaces con Pre hacen que el código que hace el log se ejecute antes de la operación contra la base de datos, de tal forma que podamos controlar si no se pudo realizar el log, no se ejecute la consulta.

  • PreDeleteEventListener
  • PreInsertEventListener
  • PreUpdateEventListener
  • PreLoadEventListener

Las interfaces con Post hacen que el código que hace el log se ejecute más después de la operación contra la base de datos, de tal forma que podamos recuperar los datos que hemos procesado.

  • PostLoadEventListener // Así ya tenemos los datos que se han leído
  • PostUpdateEventListener
  • PostDelete
  • PostInsertEventListener

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.