HikariDataSource
는 DataSource
인터페이스를 구현MyPool
이라고 지정Thread.sleep
로 대기 시간 주어야 쓰레드 풀에 커넥션이 생성되는 로그 확인 가능@Test
void dataSourceConnectionPool() throws SQLException, InterruptedException {
// 커넥션 풀링
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl(URL);
dataSource.setUsername(USERNAME);
dataSource.setPassword(PASSWORD);
dataSource.setMaximumPoolSize(10);
dataSource.setPoolName("MyPool");
useDataSource(dataSource);
Thread.sleep(1000);
}
private void useDataSource(DataSource dataSource) throws SQLException {
Connection con1 = dataSource.getConnection();
Connection con2 = dataSource.getConnection();
log.info("--- use DriverManagerDataSource ---");
log.info("connection={}, class={}", con1, con1.getClass());
log.info("connection={}, class={}", con2, con2,getClass());
Assertions.assertThat(con1).isNotNull();
Assertions.assertThat(con2).isNotNull();
}
실행 결과
HikariConfig
HikariCP
관련 설정을 확인할 수 있음MyPool
)과 최대 풀 수(10
)을 확인할 수 있음MyPool connection adder
10
)까지 채움별도의 쓰레드를 사용해서 커넥션 풀에 커넥션을 채우는 이유
커넥션 풀에서 커넥션 획득
active=2
, 풀에서 대기 상태인 커넥션 idle=8
을 확인할 수 있음