or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration.mdconnection-pooling.mdhibernate-integration.mdindex.mdjmx-management.mdmetrics-integration.mdutilities.md
tile.json

tessl/maven-com-zaxxer--hikari-cp

High-performance JDBC connection pool library for Java applications

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.zaxxer/HikariCP@6.3.x

To install, run

npx @tessl/cli install tessl/maven-com-zaxxer--hikari-cp@6.3.0

index.mddocs/

HikariCP

HikariCP is a high-performance, zero-overhead production-ready JDBC connection pool for Java applications. At roughly 165KB, this library provides a fast, simple, and reliable connection pooling solution that emphasizes simplicity as a prerequisite for reliability.

Package Information

  • Package Name: com.zaxxer:HikariCP
  • Package Type: maven
  • Language: Java
  • Installation: Add to your Maven pom.xml:
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>6.3.0</version>
</dependency>

Gradle:

implementation 'com.zaxxer:HikariCP:6.3.0'

Core Imports

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

For metrics integration:

import com.zaxxer.hikari.metrics.MetricsTrackerFactory;
import com.zaxxer.hikari.metrics.micrometer.MicrometerMetricsTrackerFactory;

For Hibernate integration:

import com.zaxxer.hikari.hibernate.HikariConnectionProvider;

Basic Usage

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;

// Method 1: Using HikariConfig
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("myuser");
config.setPassword("mypassword");
config.setMaximumPoolSize(20);

HikariDataSource dataSource = new HikariDataSource(config);

// Method 2: Using property file
HikariConfig config = new HikariConfig("/path/to/hikari.properties");
HikariDataSource dataSource = new HikariDataSource(config);

// Method 3: Default constructor with programmatic configuration
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("myuser");
dataSource.setPassword("mypassword");

// Getting connections
try (Connection connection = dataSource.getConnection()) {
    // Use the connection for database operations
    // Connection is automatically returned to pool when closed
}

// Shutdown the pool when application terminates
dataSource.close();

Architecture

HikariCP is built around several key components:

  • Connection Pool: Fast, lightweight connection pooling with minimal overhead
  • Configuration System: Comprehensive configuration with validation and runtime management
  • JMX Management: Runtime monitoring and management through MXBeans
  • Metrics Integration: Pluggable metrics support for monitoring frameworks
  • Proxy Layer: JDBC proxy implementations for connection leak detection and management
  • Validation System: Connection validation with configurable test queries and timeouts

Capabilities

Core Connection Pooling

Primary connection pool functionality for creating and managing database connections efficiently.

public class HikariDataSource extends HikariConfig implements DataSource, Closeable {
    public HikariDataSource();
    public HikariDataSource(HikariConfig configuration);
    public Connection getConnection() throws SQLException;
    public void close();
    public boolean isClosed();
    public boolean isRunning();
}

Connection Pooling

Configuration Management

Comprehensive configuration system with validation, property loading, and runtime management capabilities.

public class HikariConfig implements HikariConfigMXBean {
    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 setMaximumPoolSize(int maxPoolSize);
    public void setMinimumIdle(int minIdle);
    
    // Timeout configurations
    public void setConnectionTimeout(long connectionTimeoutMs);
    public void setIdleTimeout(long idleTimeoutMs);
    public void setMaxLifetime(long maxLifetimeMs);
    
    public void validate();
}

Configuration

JMX Management

Runtime monitoring and management through JMX MBeans for operational visibility and control.

public interface HikariPoolMXBean {
    int getIdleConnections();
    int getActiveConnections();
    int getTotalConnections();
    int getThreadsAwaitingConnection();
    void softEvictConnections();
    void suspendPool();
    void resumePool();
}

public interface HikariConfigMXBean {
    long getConnectionTimeout();
    void setConnectionTimeout(long connectionTimeoutMs);
    int getMaximumPoolSize();
    void setMaximumPoolSize(int maxPoolSize);
    // ... other runtime configuration methods
}

JMX Management

Metrics Integration

Pluggable metrics system supporting Micrometer, Dropwizard/Codahale, and Prometheus monitoring frameworks.

public interface MetricsTrackerFactory {
    IMetricsTracker create(String poolName, PoolStats poolStats);
}

public interface IMetricsTracker extends AutoCloseable {
    default void recordConnectionCreatedMillis(long connectionCreatedMillis) {}
    default void recordConnectionAcquiredNanos(long elapsedAcquiredNanos) {}
    default void recordConnectionUsageMillis(long elapsedBorrowedMillis) {}
    default void recordConnectionTimeout() {}
}

// Micrometer integration
public class MicrometerMetricsTrackerFactory implements MetricsTrackerFactory;

// Dropwizard integration  
public class CodahaleMetricsTrackerFactory implements MetricsTrackerFactory;
public class Dropwizard5MetricsTrackerFactory implements MetricsTrackerFactory;

// Prometheus integration
public class PrometheusMetricsTrackerFactory implements MetricsTrackerFactory;
public class PrometheusHistogramMetricsTrackerFactory implements MetricsTrackerFactory;

Metrics Integration

Hibernate Integration

Seamless integration with Hibernate ORM for connection provider implementation.

public class HikariConnectionProvider 
    implements ConnectionProvider, Configurable, Stoppable, ServiceRegistryAwareService {
    // Hibernate ConnectionProvider implementation
}

public class HikariConfigurationUtil {
    // Utility methods for Hibernate configuration
}

Hibernate Integration

Utility Classes

Supporting utility classes for credentials management, JNDI integration, and advanced connection handling.

public final class Credentials {
    public static Credentials of(String username, String password);
    public Credentials(String username, String password);
    public String getUsername();
    public String getPassword();
}

public class HikariJNDIFactory implements ObjectFactory {
    public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment);
}

public interface SQLExceptionOverride {
    enum Override { CONTINUE_EVICT, DO_NOT_EVICT, MUST_EVICT }
    default Override adjudicate(SQLException sqlException);
}

Utilities

Types

// Configuration credentials holder
public final class Credentials {
    public static Credentials of(String username, String password);
    public String getUsername();
    public String getPassword();
}

// Pool statistics base class
public abstract class PoolStats {
    public PoolStats(long timeoutMs);
    public int getTotalConnections();
    public int getIdleConnections();  
    public int getActiveConnections();
    public int getPendingThreads();
    public int getMaxConnections();
    public int getMinConnections();
}

// SQL exception override control
public enum SQLExceptionOverride.Override {
    CONTINUE_EVICT,  // Continue with default eviction logic
    DO_NOT_EVICT,    // Do not evict the connection
    MUST_EVICT       // Force eviction regardless of exception
}