์ค๋์ ์ด์ ์ ๊น ๋ฐฐ์ ๋ HikariCP ์ ๋ํด ์ค์ ์ ํ์๋ค.
HikariCP์ ๊ฐ๋
์ ์ด์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค.
HikariCP ์ค์ ์ ํ๊ธฐ ์ํด์๋ ์ ์ผ ๋จผ์ ์์กด์ฑ ์ค์ ๋ฐ yml ์ค์ ์ ํด์ค์ผ ํฉ๋๋ค.
dependencies {
....
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
runtimeOnly 'mysql:mysql-connector-java'
....
}
HikariCP ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.spring:
datasource:
url: jdbc:mysql://localhost:{ํฌํธ๋ฒํธ}/{DB ์คํค๋ง}?useSSL=false&autoReconnect=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Seoul
username: {USERNAME}
password: {PASSWORD}
driver-class-name: com.mysql.jdbc.Driver
# hikari ์ค์ ์ ๋ณด
# connection-timeout: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ์ด ์ด์๊ฐ๋ด์ ์ค์ ๋์ง ์์ผ๋ฉด ์ค๋ฅ (๋ฐ๋ฆฌ์ด)
# validation-timeout: ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ๋ฐ ์ฌ์ฉํ๋ ์๊ฐ
# minimum-idle: ์ต์ ์ ํด ์ฐ๊ฒฐ์
# max-lifetime: ์ ์ง ๋ ์ ์๋ ์ต๋์๊ฐ
# maximum-pool-size: ์ต๋ poll ์ฌ์ด์ฆ (default๋ 10)-> ์ด๋ถ๋ถ์์ ๋ฐ๋๋ฝ ๋ฐ์ํ ์ ์์
hikari:
connection-timeout: 3000
validation-timeout: 3000
minimum-idle: 5
max-lifetime: 240000
maximum-pool-size: 20
์์กด์ฑ๊ณผ yml์ค์ ์ ํด์ฃผ์์ผ๋ฉด @Configuration ์ด๋
ธํ
์ด์
์ ํตํด @Bean ๋ฑ๋ก์ ํด์ค์ผํฉ๋๋ค.
@Configuration
public class HikariConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSourceProperties dataSourceProperties() {
return new DataSourceProperties();
}
// yml์ ์๋ hikari ์ค์ ๋ถ๋ฌ์ค๊ธฐ
@Bean
@ConfigurationProperties("spring.datasource.hikari")
public HikariDataSource dataSource(DataSourceProperties properties) {
return properties.initializeDataSourceBuilder()
.type(HikariDataSource.class).build();
}
}
์ฌ๊ธฐ์ ๋ฐ๋๋ฝ (๊ต์ฐฉ์ํ ) ์ด๋ ?
๊ฐ๋จํ๊ฒ ์๊ฐํ์ฌ ๋ ๊ฐ ์ด์์ ์์ ์ด ์๋ก ์๋๋ฐฉ์ ์์ ์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฌดํ ๋๊ธฐ ์ํ์ ๋น ์ง๊ฒ ๋๋๊ฒ์ ๋งํฉ๋๋ค.
โก HikariCp๋ฅผ ์ฌ์ฉํ๊ฒ๋๋ฉด์ ๋ฐ๋๋ฝ์ ๋ํด ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ปค๋ฅ์ ํ์ ํฌ๊ธฐ๋ฅผ ์ ์ค์ ํด์ผ ํฉ๋๋ค. ์ด ์ ์ ์๋์ ์ฐธ์กฐ (Reference) ๋ธ๋ก๊ทธ๋ฅผ ํ์ธ ํ๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค.