All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.marschall.hibernate.jfr.JfrIntegrator Maven / Gradle / Ivy

The newest version!
package com.github.marschall.hibernate.jfr;

import org.hibernate.boot.Metadata;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.event.service.spi.EventListenerRegistry;
import org.hibernate.event.spi.EventType;
import org.hibernate.integrator.spi.Integrator;
import org.hibernate.service.spi.SessionFactoryServiceRegistry;

/**
 * Registers a {@link JfrListener} for various Hibernate events.
 */
public class JfrIntegrator implements Integrator {

  @Override
  public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory,
      SessionFactoryServiceRegistry serviceRegistry) {

    var eventListenerRegistry =
        serviceRegistry.getService(EventListenerRegistry.class);

    var listener = new JfrListener();
    eventListenerRegistry.getEventListenerGroup(EventType.AUTO_FLUSH)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.CLEAR)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.DELETE)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.DIRTY_CHECK)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.EVICT)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.FLUSH)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.FLUSH_ENTITY)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.LOAD)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.LOCK)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.MERGE)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.PERSIST)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.PERSIST_ONFLUSH)
    .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.REFRESH)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.RESOLVE_NATURAL_ID)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.SAVE)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.SAVE_UPDATE)
      .appendListener(listener);
    eventListenerRegistry.getEventListenerGroup(EventType.UPDATE)
      .appendListener(listener);
  }

  @Override
  public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
    // nothing to do
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy