java — version local — recovered with pkg
graph TD
Hikariconfig["Hikariconfig\n(106 entities)"]
Hikariconfigmxbean["Hikariconfigmxbean\n(1 entities)"]
Hikaricredentialsprovider["Hikaricredentialsprovider\n(1 entities)"]
Hikaridatasource["Hikaridatasource\n(20 entities)"]
Hikaripoolmxbean["Hikaripoolmxbean\n(8 entities)"]
Sqlexceptionoverride["Sqlexceptionoverride\n(2 entities)"]
Hibernate["Hibernate\n(9 entities)"]
Metrics["Metrics\n(84 entities)"]
Pool["Pool\n(134 entities)"]
Util["Util\n(201 entities)"]
Hibernate --> Hikariconfig
Hibernate --> Hikaridatasource
Hikariconfig --> Hikariconfigmxbean
Hikariconfig --> Metrics
Hikariconfig --> Util
Hikariconfigmxbean --> Util
Hikaricredentialsprovider --> Util
Hikaridatasource --> Hikariconfig
Hikaridatasource --> Metrics
Hikaridatasource --> Pool
Metrics --> Hikariconfig
Metrics --> Pool
Metrics --> Util
Pool --> Hikariconfig
Pool --> Hikaricredentialsprovider
Pool --> Hikaridatasource
Pool --> Hikaripoolmxbean
Pool --> Metrics
Pool --> Sqlexceptionoverride
Pool --> Util
Util --> Hikariconfig
| Component | Responsibility | # | Entities |
|---|---|---|---|
| Hikariconfig | Entities in HikariConfig | 106 | com.zaxxer.hikari.HikariConfig, com.zaxxer.hikari.HikariConfig.HikariConfig, com.zaxxer.hikari.HikariConfig.addDataSourceProperty, com.zaxxer.hikari.HikariConfig.addHealthCheckProperty, com.zaxxer.hikari.HikariConfig.checkIfSealed, com.zaxxer.hikari.HikariConfig.copyStateTo, com.zaxxer.hikari.HikariConfig.generatePoolName, com.zaxxer.hikari.HikariConfig.getCatalog, ... (+98 more) |
| Hikariconfigmxbean | Entities in HikariConfigMXBean | 1 | com.zaxxer.hikari.HikariConfigMXBean |
| Hikaricredentialsprovider | Entities in HikariCredentialsProvider | 1 | com.zaxxer.hikari.HikariCredentialsProvider |
| Hikaridatasource | Entities in HikariDataSource | 20 | com.zaxxer.hikari.HikariDataSource, com.zaxxer.hikari.HikariDataSource.HikariDataSource, com.zaxxer.hikari.HikariDataSource.close, com.zaxxer.hikari.HikariDataSource.evictConnection, com.zaxxer.hikari.HikariDataSource.getConnection, com.zaxxer.hikari.HikariDataSource.getHikariConfigMXBean, com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean, com.zaxxer.hikari.HikariDataSource.getLogWriter, ... (+12 more) |
| Hikaripoolmxbean | Entities in HikariPoolMXBean | 8 | com.zaxxer.hikari.HikariPoolMXBean, com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections, com.zaxxer.hikari.HikariPoolMXBean.getIdleConnections, com.zaxxer.hikari.HikariPoolMXBean.getThreadsAwaitingConnection, com.zaxxer.hikari.HikariPoolMXBean.getTotalConnections, com.zaxxer.hikari.HikariPoolMXBean.resumePool, com.zaxxer.hikari.HikariPoolMXBean.softEvictConnections, com.zaxxer.hikari.HikariPoolMXBean.suspendPool |
| Sqlexceptionoverride | Entities in SQLExceptionOverride | 2 | com.zaxxer.hikari.SQLExceptionOverride, com.zaxxer.hikari.SQLExceptionOverride.adjudicate |
| Hibernate | Entities in hibernate | 9 | com.zaxxer.hikari.hibernate.HikariConnectionProvider, com.zaxxer.hikari.hibernate.HikariConnectionProvider.HikariConnectionProvider, com.zaxxer.hikari.hibernate.HikariConnectionProvider.closeConnection, com.zaxxer.hikari.hibernate.HikariConnectionProvider.configure, com.zaxxer.hikari.hibernate.HikariConnectionProvider.getConnection, com.zaxxer.hikari.hibernate.HikariConnectionProvider.isUnwrappableAs, com.zaxxer.hikari.hibernate.HikariConnectionProvider.stop, com.zaxxer.hikari.hibernate.HikariConnectionProvider.supportsAggressiveRelease, ... (+1 more) |
| Metrics | Entities in metrics | 84 | com.zaxxer.hikari.metrics.IMetricsTracker, com.zaxxer.hikari.metrics.IMetricsTracker.close, com.zaxxer.hikari.metrics.IMetricsTracker.recordConnectionAcquiredNanos, com.zaxxer.hikari.metrics.IMetricsTracker.recordConnectionCreatedMillis, com.zaxxer.hikari.metrics.IMetricsTracker.recordConnectionTimeout, com.zaxxer.hikari.metrics.IMetricsTracker.recordConnectionUsageMillis, com.zaxxer.hikari.metrics.MetricsTracker, com.zaxxer.hikari.metrics.MetricsTrackerFactory, ... (+76 more) |
| Pool | Entities in pool | 134 | com.zaxxer.hikari.pool.HikariPool, com.zaxxer.hikari.pool.HikariPool.HikariPool, com.zaxxer.hikari.pool.HikariPool.abortActiveConnections, com.zaxxer.hikari.pool.HikariPool.addBagItem, com.zaxxer.hikari.pool.HikariPool.checkFailFast, com.zaxxer.hikari.pool.HikariPool.closeConnection, com.zaxxer.hikari.pool.HikariPool.createPoolEntry, com.zaxxer.hikari.pool.HikariPool.createTimeoutException, ... (+126 more) |
| Util | Entities in util | 201 | com.zaxxer.hikari.HikariConfigMXBean.getCatalog, com.zaxxer.hikari.HikariConfigMXBean.getConnectionTimeout, com.zaxxer.hikari.HikariConfigMXBean.getIdleTimeout, com.zaxxer.hikari.HikariConfigMXBean.getLeakDetectionThreshold, com.zaxxer.hikari.HikariConfigMXBean.getMaxLifetime, com.zaxxer.hikari.HikariConfigMXBean.getMaximumPoolSize, com.zaxxer.hikari.HikariConfigMXBean.getMinimumIdle, com.zaxxer.hikari.HikariConfigMXBean.getPoolName, ... (+193 more) |
Circular dependency among 7 components: Hikariconfig <-> Hikariconfigmxbean <-> Hikaricredentialsprovider <-> Hikaridatasource <-> Metrics <-> Pool <-> Util
Why: Dependency cycles make components tightly coupled — you cannot change, test, or deploy any component in the cycle independently. This hinders maintainability, increases build times, and makes the system harder to understand.
Fix: Break the cycle by introducing an interface/abstraction that one component depends on, inverting the dependency direction. Consider the Dependency Inversion Principle (DIP).
Affects: Hikariconfig, Hikariconfigmxbean, Hikaricredentialsprovider, Hikaridatasource, Metrics, Pool, Util
Hikariconfig contains 106 entities but only 14 internal dependencies (0.13 per entity), suggesting multiple responsibilities.
Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.
Fix: Consider splitting Hikariconfig into smaller, focused components with single responsibilities.
Affects: Hikariconfig
Pool contains 134 entities but only 30 internal dependencies (0.22 per entity), suggesting multiple responsibilities.
Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.
Fix: Consider splitting Pool into smaller, focused components with single responsibilities.
Affects: Pool
'Factory' pattern is scattered across 5 components: Hikariconfig, Hikaridatasource, Metrics, Pool, Util
Why: When a single concern is spread across many components, changes to that concern require modifying multiple places, increasing the risk of inconsistencies and bugs.
Fix: Centralize 'Factory'-related functionality into a dedicated component to reduce scattering.
Affects: Hikariconfig, Hikaridatasource, Metrics, Pool, Util
'Provider' pattern is scattered across 3 components: Hibernate, Hikariconfig, Hikaricredentialsprovider
Why: When a single concern is spread across many components, changes to that concern require modifying multiple places, increasing the risk of inconsistencies and bugs.
Fix: Centralize 'Provider'-related functionality into a dedicated component to reduce scattering.
Affects: Hibernate, Hikariconfig, Hikaricredentialsprovider
Hikariconfig is depended on by 5 other components (56% of all components).
Why: A component with too many dependents becomes a bottleneck. Any change to it can cascade across the entire system, making evolution risky and expensive.
Fix: Consider splitting Hikariconfig into smaller interfaces so dependents only couple to what they actually use (ISP).
Affects: Hikariconfig
Util is depended on by 5 other components (56% of all components).
Why: A component with too many dependents becomes a bottleneck. Any change to it can cascade across the entire system, making evolution risky and expensive.
Fix: Consider splitting Util into smaller interfaces so dependents only couple to what they actually use (ISP).
Affects: Util
| Package | Entities |
|---|---|
com.zaxxer.hikari.pool |
220 |
com.zaxxer.hikari |
153 |
com.zaxxer.hikari.util |
130 |
com.zaxxer.hikari.metrics.dropwizard |
33 |
com.zaxxer.hikari.metrics.prometheus |
33 |
com.zaxxer.hikari.metrics |
19 |
com.zaxxer.hikari.hibernate |
12 |
com.zaxxer.hikari.metrics.micrometer |
10 |