Filtering data - Listening to and intercepting events - Implementing Hibernate interceptors

3 belangrijke vragen over Filtering data - Listening to and intercepting events - Implementing Hibernate interceptors

Hoe implementeren we een audit log met een org.hibernate.interceptor of een EmptyInterceptor ?

We hebben meerdere elementen nodig om audit logging te implementeren. Allereerst moeten we de entiteitsklassen markeren waarvoor we audit logging willen inschakelen. Vervolgens definiëren we welke informatie we willen vastleggen, zoals de gebruiker, datum, tijd en het type wijziging. Tot slot zullen we dit allemaal samenbrengen met een
org.hibernate.Interceptor die automatisch het audit trail aanmaakt.

Hoe creeren we een marker interface en passsen hem toe ?

Eerst zullen we een marker interface, Auditable, creëren:
public interface Auditable {
Long getId();
}

@Entity
public class Item implements Auditable {
// . . .
}

Hoe schakel we een eigengemaakte interceptor in ?

EntityManager em = emf.createEntityManager();
SessionFactory sessionFactory = emf.unwrap(SessionFactory.class);
Session session = sessionFactory.withOptions().
interceptor(new AuditLogInterceptor()).openSession();

Deze Session heeft nu een ingeschakelde AuditLogInterceptor, maar de
interceptor moet ook geconfigureerd worden met de huidige Session en de
identificatie van de ingelogde gebruiker.

AuditLogInterceptor interceptor =
(AuditLogInterceptor) ((SessionImplementor) session).getInterceptor();
interceptor.setCurrentSession(session);
interceptor.setCurrentUserId(CURRENT_USER_ID);

De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:

  • Een unieke studie- en oefentool
  • Nooit meer iets twee keer studeren
  • Haal de cijfers waar je op hoopt
  • 100% zeker alles onthouden
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo