diff --git a/hibernate-core/src/main/java/org/hibernate/BaseSessionEventListener.java b/hibernate-core/src/main/java/org/hibernate/BaseSessionEventListener.java index a8fdcd1b336..6d0222d6094 100644 --- a/hibernate-core/src/main/java/org/hibernate/BaseSessionEventListener.java +++ b/hibernate-core/src/main/java/org/hibernate/BaseSessionEventListener.java @@ -5,97 +5,14 @@ package org.hibernate; /** - * A no-op implementation of SessionEventListener. Intended as a convenient base class for developing - * SessionEventListener implementations. + * A noop implementation of {@link SessionEventListener}. + * Intended as a convenient base class for developing + * {@code SessionEventListener} implementations. * * @author Steve Ebersole + * + * @deprecated Just implement {@link SessionEventListener} directly. */ +@Deprecated(since = "7", forRemoval = true) public class BaseSessionEventListener implements SessionEventListener { - @Override - public void transactionCompletion(boolean successful) { - } - - @Override - public void jdbcConnectionAcquisitionStart() { - } - - @Override - public void jdbcConnectionAcquisitionEnd() { - } - - @Override - public void jdbcConnectionReleaseStart() { - } - - @Override - public void jdbcConnectionReleaseEnd() { - } - - @Override - public void jdbcPrepareStatementStart() { - } - - @Override - public void jdbcPrepareStatementEnd() { - } - - @Override - public void jdbcExecuteStatementStart() { - } - - @Override - public void jdbcExecuteStatementEnd() { - } - - @Override - public void jdbcExecuteBatchStart() { - } - - @Override - public void jdbcExecuteBatchEnd() { - } - - @Override - public void cachePutStart() { - } - - @Override - public void cachePutEnd() { - } - - @Override - public void cacheGetStart() { - } - - @Override - public void cacheGetEnd(boolean hit) { - } - - @Override - public void flushStart() { - } - - @Override - public void flushEnd(int numberOfEntities, int numberOfCollections) { - } - - @Override - public void partialFlushStart() { - } - - @Override - public void partialFlushEnd(int numberOfEntities, int numberOfCollections) { - } - - @Override - public void dirtyCalculationStart() { - } - - @Override - public void dirtyCalculationEnd(boolean dirty) { - } - - @Override - public void end() { - } } diff --git a/hibernate-core/src/main/java/org/hibernate/SessionEventListener.java b/hibernate-core/src/main/java/org/hibernate/SessionEventListener.java index bbc4d4d0d32..b486d16ff93 100644 --- a/hibernate-core/src/main/java/org/hibernate/SessionEventListener.java +++ b/hibernate-core/src/main/java/org/hibernate/SessionEventListener.java @@ -15,8 +15,8 @@ * sessions may be registered using the configuration property * {@value org.hibernate.cfg.AvailableSettings#AUTO_SESSION_EVENTS_LISTENER}. * A new instance of the class will be created for each new session. - *
- * This an incubating API, subject to change. + * + * @apiNote This an incubating API, subject to change. * * @see org.hibernate.cfg.AvailableSettings#AUTO_SESSION_EVENTS_LISTENER * @see SessionBuilder#eventListeners(SessionEventListener...) diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/SessionFactoryOptionsBuilder.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/SessionFactoryOptionsBuilder.java index fc19b9f69fc..a05a7bc8414 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/SessionFactoryOptionsBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/SessionFactoryOptionsBuilder.java @@ -100,7 +100,6 @@ import static org.hibernate.cfg.AvailableSettings.JDBC_TIME_ZONE; import static org.hibernate.cfg.AvailableSettings.JPA_CALLBACKS_ENABLED; import static org.hibernate.cfg.AvailableSettings.JTA_TRACK_BY_THREAD; -import static org.hibernate.cfg.AvailableSettings.LOG_SESSION_METRICS; import static org.hibernate.cfg.AvailableSettings.MAX_FETCH_DEPTH; import static org.hibernate.cfg.AvailableSettings.MULTI_TENANT_IDENTIFIER_RESOLVER; import static org.hibernate.cfg.AvailableSettings.ORDER_INSERTS; @@ -357,8 +356,7 @@ public SessionFactoryOptionsBuilder(StandardServiceRegistry serviceRegistry, Boo ? null : strategySelector.selectStrategyImplementor( SessionEventListener.class, autoSessionEventsListenerName ); - final boolean logSessionMetrics = configurationService.getSetting( LOG_SESSION_METRICS, BOOLEAN, statisticsEnabled ); - this.baselineSessionEventsListenerBuilder = new BaselineSessionEventsListenerBuilder( logSessionMetrics, autoSessionEventsListener ); + this.baselineSessionEventsListenerBuilder = new BaselineSessionEventsListenerBuilder( autoSessionEventsListener ); this.customEntityDirtinessStrategy = strategySelector.resolveDefaultableStrategy( CustomEntityDirtinessStrategy.class, diff --git a/hibernate-core/src/main/java/org/hibernate/cache/spi/SecondLevelCacheLogger.java b/hibernate-core/src/main/java/org/hibernate/cache/spi/SecondLevelCacheLogger.java index 119c4910da0..f81c86476f5 100644 --- a/hibernate-core/src/main/java/org/hibernate/cache/spi/SecondLevelCacheLogger.java +++ b/hibernate-core/src/main/java/org/hibernate/cache/spi/SecondLevelCacheLogger.java @@ -84,6 +84,7 @@ public interface SecondLevelCacheLogger extends BasicLogger { " You can disable this warning by setting '%2$s' to '%3$s'.", id = NAMESPACE + 6 ) + @SuppressWarnings( "unused" ) // used by hibernate-jcache void missingCacheCreated(String regionName, String configurationPropertyToDisableKey, String configurationPropertyToDisableValue); @LogMessage(level = WARN) @@ -92,6 +93,7 @@ public interface SecondLevelCacheLogger extends BasicLogger { " Update your configuration to rename cache [%2$s] to [%1$s].", id = NAMESPACE + 7 ) + @SuppressWarnings( "unused" ) // used by hibernate-jcache void usingLegacyCacheName(String currentName, String legacyName); @LogMessage(level = WARN) @@ -100,6 +102,7 @@ public interface SecondLevelCacheLogger extends BasicLogger { " Make sure your cache implementation supports JTA transactions.", id = NAMESPACE + 8 ) + @SuppressWarnings( "unused" ) // used by hibernate-jcache void nonStandardSupportForAccessType(String key, String accessType, String regionName); } diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/PersistenceSettings.java b/hibernate-core/src/main/java/org/hibernate/cfg/PersistenceSettings.java index 6039dd56dc2..78a2f2e0a27 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/PersistenceSettings.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/PersistenceSettings.java @@ -134,7 +134,6 @@ public interface PersistenceSettings { * * @see #SCANNER * @see org.hibernate.boot.archive.scan.spi.Scanner - * @see org.hibernate.boot.archive.scan.spi.AbstractScannerImpl * @see org.hibernate.boot.MetadataBuilder#applyArchiveDescriptorFactory */ String SCANNER_ARCHIVE_INTERPRETER = "hibernate.archive.interpreter"; diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/SessionEventSettings.java b/hibernate-core/src/main/java/org/hibernate/cfg/SessionEventSettings.java index adad86ddf5d..19b575d8165 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/SessionEventSettings.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/SessionEventSettings.java @@ -13,18 +13,6 @@ */ public interface SessionEventSettings { - /** - * Controls whether {@linkplain org.hibernate.stat.SessionStatistics session metrics} - * should be {@linkplain org.hibernate.engine.internal.StatisticalLoggingSessionEventListener - * logged} for any session in which statistics are being collected. - *
- * By default, logging of session metrics is disabled unless {@link StatisticsSettings#GENERATE_STATISTICS}
- * is enabled.
- *
- * @settingDefault Defined by {@link StatisticsSettings#GENERATE_STATISTICS}
- */
- String LOG_SESSION_METRICS = "hibernate.session.events.log";
-
/**
* Defines a default {@link org.hibernate.SessionEventListener} to be applied to
* newly-opened {@link org.hibernate.Session}s.
@@ -75,4 +63,12 @@ public interface SessionEventSettings {
* @since 5.2
*/
String SESSION_SCOPED_INTERCEPTOR = "hibernate.session_factory.session_scoped_interceptor";
+
+ /**
+ * @deprecated This setting is now ignored. Enable the log category
+ * {@code org.hibernate.session.metrics} to automatically
+ * collect and log session-level metrics.
+ */
+ @Deprecated(since = "7", forRemoval = true)
+ String LOG_SESSION_METRICS = "hibernate.session.events.log";
}
diff --git a/hibernate-core/src/main/java/org/hibernate/engine/internal/StatisticalLoggingSessionEventListener.java b/hibernate-core/src/main/java/org/hibernate/engine/internal/StatisticalLoggingSessionEventListener.java
index 433ec03aed7..5a0b52bbb33 100644
--- a/hibernate-core/src/main/java/org/hibernate/engine/internal/StatisticalLoggingSessionEventListener.java
+++ b/hibernate-core/src/main/java/org/hibernate/engine/internal/StatisticalLoggingSessionEventListener.java
@@ -4,17 +4,18 @@
*/
package org.hibernate.engine.internal;
-import org.hibernate.BaseSessionEventListener;
+import org.hibernate.SessionEventListener;
+import org.hibernate.internal.CoreMessageLogger;
-import org.jboss.logging.Logger;
+import static org.hibernate.internal.CoreLogging.messageLogger;
/**
- * @see org.hibernate.cfg.AvailableSettings#LOG_SESSION_METRICS
+ * Tracks and logs certain session-level metrics.
*
* @author Steve Ebersole
*/
-public class StatisticalLoggingSessionEventListener extends BaseSessionEventListener {
- private static final Logger log = Logger.getLogger( StatisticalLoggingSessionEventListener.class );
+public class StatisticalLoggingSessionEventListener implements SessionEventListener {
+ private static final CoreMessageLogger log = messageLogger( "org.hibernate.session.metrics" );
/**
* Used by SettingsFactory (in conjunction with stats being enabled) to determine whether to apply this listener
@@ -22,7 +23,7 @@ public class StatisticalLoggingSessionEventListener extends BaseSessionEventList
* @return {@code true} if logging is enabled for this listener.
*/
public static boolean isLoggingEnabled() {
- return log.isInfoEnabled();
+ return log.isDebugEnabled();
}
// cumulative state ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -274,21 +275,8 @@ public void partialFlushEnd(int numberOfEntities, int numberOfCollections) {
@Override
public void end() {
- if ( log.isInfoEnabled() ) {
- log.infof(
- "Session Metrics {\n" +
- " %s nanoseconds spent acquiring %s JDBC connections;\n" +
- " %s nanoseconds spent releasing %s JDBC connections;\n" +
- " %s nanoseconds spent preparing %s JDBC statements;\n" +
- " %s nanoseconds spent executing %s JDBC statements;\n" +
- " %s nanoseconds spent executing %s JDBC batches;\n" +
- " %s nanoseconds spent performing %s L2C puts;\n" +
- " %s nanoseconds spent performing %s L2C hits;\n" +
- " %s nanoseconds spent performing %s L2C misses;\n" +
- " %s nanoseconds spent executing %s flushes (flushing a total of %s entities and %s collections);\n" +
- " %s nanoseconds spent executing %s pre-partial-flushes;\n" +
- " %s nanoseconds spent executing %s partial-flushes (flushing a total of %s entities and %s collections)\n" +
- "}",
+ if ( isLoggingEnabled() ) {
+ log.sessionMetrics(
jdbcConnectionAcquisitionTime,
jdbcConnectionAcquisitionCount,
jdbcConnectionReleaseTime,
diff --git a/hibernate-core/src/main/java/org/hibernate/internal/BaselineSessionEventsListenerBuilder.java b/hibernate-core/src/main/java/org/hibernate/internal/BaselineSessionEventsListenerBuilder.java
index d550c9b30e5..4e9507a9ebe 100644
--- a/hibernate-core/src/main/java/org/hibernate/internal/BaselineSessionEventsListenerBuilder.java
+++ b/hibernate-core/src/main/java/org/hibernate/internal/BaselineSessionEventsListenerBuilder.java
@@ -19,21 +19,12 @@ public class BaselineSessionEventsListenerBuilder {
private static final SessionEventListener[] EMPTY = new SessionEventListener[0];
- private final boolean logSessionMetrics;
private final Class extends SessionEventListener> autoListener;
- public BaselineSessionEventsListenerBuilder(
- boolean logSessionMetrics,
- Class extends SessionEventListener> autoListener) {
- this.logSessionMetrics = logSessionMetrics;
+ public BaselineSessionEventsListenerBuilder(Class extends SessionEventListener> autoListener) {
this.autoListener = autoListener;
}
- @SuppressWarnings("unused")
- public boolean isLogSessionMetrics() {
- return logSessionMetrics;
- }
-
@SuppressWarnings("unused")
public Class extends SessionEventListener> getAutoListener() {
return autoListener;
@@ -48,24 +39,26 @@ public List