Ultimate JDBC Connection Pool providing high-performance database connection management with zero-overhead and comprehensive features.
npx @tessl/cli install tessl/maven-com-zaxxer--hikaricp@5.1.0HikariCP is a high-performance JDBC connection pool library providing zero-overhead database connection management with a focus on speed, simplicity, and reliability. At approximately 130Kb, it's a lightweight solution that offers comprehensive connection pooling features including connection validation, leak detection, transaction rollback on return, and extensive monitoring capabilities.
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.1.0</version>
</dependency>implementation 'com.zaxxer:HikariCP:5.1.0'import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;
// Create configuration
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("user");
config.setPassword("password");
config.setMaximumPoolSize(10);
// Create DataSource
HikariDataSource dataSource = new HikariDataSource(config);
// Get connection and use it
try (Connection connection = dataSource.getConnection()) {
// Use connection for database operations
// Connection is automatically returned to pool when closed
}
// Shutdown when application terminates
dataSource.close();HikariCP is built around several key components:
Comprehensive configuration system with validation, property file support, and runtime tuning capabilities.
public class HikariConfig implements HikariConfigMXBean {
// Constructors
public HikariConfig();
public HikariConfig(Properties properties);
public HikariConfig(String propertyFileName);
// Core connection settings
public void setJdbcUrl(String jdbcUrl);
public void setUsername(String username);
public void setPassword(String password);
public void setDriverClassName(String driverClassName);
// Pool sizing
public void setMaximumPoolSize(int maxPoolSize);
public void setMinimumIdle(int minIdle);
// Timeouts (in milliseconds)
public void setConnectionTimeout(long connectionTimeoutMs);
public void setIdleTimeout(long idleTimeoutMs);
public void setMaxLifetime(long maxLifetimeMs);
public void setValidationTimeout(long validationTimeoutMs);
}High-performance DataSource implementation with automatic connection lifecycle management, leak detection, and pool monitoring.
public class HikariDataSource extends HikariConfig implements DataSource, Closeable {
// Constructors
public HikariDataSource();
public HikariDataSource(HikariConfig configuration);
// DataSource interface
public Connection getConnection() throws SQLException;
// Pool management
public boolean isRunning();
public void evictConnection(Connection connection);
public void close();
public boolean isClosed();
}Runtime monitoring and configuration management through JMX MBeans with real-time pool statistics and configuration tuning.
public interface HikariPoolMXBean {
// Pool statistics
int getIdleConnections();
int getActiveConnections();
int getTotalConnections();
int getThreadsAwaitingConnection();
// Pool control
void softEvictConnections();
void suspendPool();
void resumePool();
}
public interface HikariConfigMXBean {
// Runtime configuration changes
void setConnectionTimeout(long connectionTimeoutMs);
void setMaximumPoolSize(int maxPoolSize);
void setMinimumIdle(int minIdle);
String getPoolName();
}Built-in support for popular metrics libraries including Dropwizard Metrics, Micrometer, and Prometheus with detailed connection pool telemetry.
// Dropwizard/Codahale Metrics
public class CodahaleMetricsTrackerFactory implements MetricsTrackerFactory {
public CodahaleMetricsTrackerFactory(MetricRegistry registry);
}
// Micrometer Metrics
public class MicrometerMetricsTrackerFactory implements MetricsTrackerFactory {
public MicrometerMetricsTrackerFactory(MeterRegistry registry);
}
// Prometheus Metrics
public class PrometheusMetricsTrackerFactory implements MetricsTrackerFactory {
public PrometheusMetricsTrackerFactory();
public PrometheusMetricsTrackerFactory(CollectorRegistry collectorRegistry);
}Native Hibernate connection provider implementation for seamless integration with Hibernate ORM applications.
public class HikariConnectionProvider implements ConnectionProvider, Configurable, Stoppable {
public Connection getConnection() throws SQLException;
public void closeConnection(Connection conn) throws SQLException;
public void configure(Map props) throws HibernateException;
}
public class HikariConfigurationUtil {
public static HikariConfig loadConfiguration(Map props);
}JNDI factory support, custom exception handling, and advanced configuration options for enterprise deployments.
// JNDI Support
public class HikariJNDIFactory implements ObjectFactory {
public synchronized Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception;
}
// Custom Exception Handling
public interface SQLExceptionOverride {
enum Override { CONTINUE_EVICT, DO_NOT_EVICT }
default Override adjudicate(final SQLException sqlException);
}public class HikariConfig implements HikariConfigMXBean {
// Configuration validation
public void validate();
public void copyStateTo(HikariConfig other);
// Property management
public void addDataSourceProperty(String propertyName, Object value);
public Properties getDataSourceProperties();
public void setDataSourceProperties(Properties dsProperties);
}public interface IMetricsTracker extends AutoCloseable {
default void recordConnectionCreatedMillis(long connectionCreatedMillis);
default void recordConnectionAcquiredNanos(final long elapsedAcquiredNanos);
default void recordConnectionUsageMillis(final long elapsedBorrowedMillis);
default void recordConnectionTimeout();
default void close();
}
public interface MetricsTrackerFactory {
IMetricsTracker create(String poolName, PoolStats poolStats);
}
public abstract class PoolStats {
public PoolStats(final long timeoutMs);
public int getTotalConnections();
public int getIdleConnections();
public int getActiveConnections();
public int getPendingThreads();
public int getMaxConnections();
public int getMinConnections();
}