티스토리 뷰
Connection pool
Connection Pool은 데이터베이스 연결을 미리 생성하고 관리하는 기술입니다.
why
성능 향상: 데이터베이스 연결을 생성하는 것은 비용이 많이 드는 작업입니다. Connection Pool을 사용하면 미리 연결을 생성해두고 재사용할 수 있기 때문에 응답 시간이 빨라집니다.
리소스 관리: 데이터베이스 연결은 제한된 리소스입니다. Connection Pool을 사용하면 연결을 효율적으로 관리하여 리소스 고갈을 방지할 수 있습니다.
연결 지속성: Connection Pool은 연결을 유지하여 연결 수명 주기를 관리합니다. 이를 통해 연결이 자주 끊기는 것을 방지할 수 있습니다.
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration // Spring 설정 클래스임을 나타내는 어노테이션
public class DatabaseConfig {
// application.properties 또는 application.yml에 정의된 데이터베이스 URL을 주입받음
@Value("${spring.datasource.url}")
private String jdbcUrl;
// application.properties 또는 application.yml에 정의된 데이터베이스 사용자명을 주입받음
@Value("${spring.datasource.username}")
private String username;
// application.properties 또는 application.yml에 정의된 데이터베이스 비밀번호를 주입받음
@Value("${spring.datasource.password}")
private String password;
@Bean // Spring이 관리하는 Bean으로 등록
public DataSource dataSource() {
// HikariCP Connection Pool 설정
HikariConfig config = new HikariConfig();
config.setJdbcUrl(jdbcUrl);
config.setUsername(username);
config.setPassword(password);
// Connection Pool 세부 설정
config.setMaximumPoolSize(20); // 최대 연결 수 20
config.setMinimumIdle(5); // 최소 유휴 연결 수 5
config.setConnectionTimeout(30000); // 연결 획득 시간 제한 30초
config.setIdleTimeout(600000); // 유휴 연결 종료 시간 제한 10분
// HikariDataSource 객체 생성 및 반환
return new HikariDataSource(config);
}
}
Spring Boot 애플리케이션에서 데이터베이스 연결을 관리하기 위한 DatabaseConfig 클래스입니다.
@Configuration 어노테이션은 이 클래스가 Spring 설정 클래스임을 나타냅니다.
@Value 어노테이션을 사용하여 application.properties 또는 application.yml 파일에 정의된 데이터베이스 URL, 사용자명, 비밀번호를 주입받습니다.
@Bean 어노테이션이 붙은 dataSource() 메서드는 Spring이 관리하는 Bean으로 등록됩니다.
dataSource() 메서드 내부에서는 HikariCP Connection Pool을 구성합니다.
HikariConfig 객체를 생성하고, 데이터베이스 연결 정보를 설정합니다.
Connection Pool의 세부 설정을 수행합니다.
maxPoolSize: 최대 연결 수 20
minimumIdle: 최소 유휴 연결 수 5
connectionTimeout: 연결 획득 시간 제한 30초
idleTimeout: 유휴 연결 종료 시간 제한 10분
HikariDataSource 객체를 생성하여 반환합니다.
이와 같이 DatabaseConfig 클래스는 HikariCP Connection Pool을 구성하여 데이터베이스 연결을 관리하는 역할을 합니다.
'궁금한 것' 카테고리의 다른 글
Spring Boot와 Spring Framework (0) | 2024.05.20 |
---|---|
WEB-INF 폴더 (0) | 2024.02.05 |
DML/DDL/DCL (0) | 2024.02.02 |
HashCode (0) | 2024.01.31 |
Null point Exception이란 (0) | 2024.01.31 |