데이터소스 (DataSource)
데이터소스(DataSource)는 데이터베이스에 대한 연결을 관리하는 객체입니다. 이는 데이터베이스 연결을 설정하고 제공하는 데 사용되며, 직접 JDBC 연결을 관리하는 대신 더 유연하고 관리하기 쉬운 방법을 제공합니다.
주요 특징:
- 재사용성: 데이터베이스 연결을 재사용하여 성능을 향상시킵니다.
- 관리성: 연결을 보다 효율적으로 관리할 수 있습니다. 예를 들어, 연결 풀링을 지원합니다.
- 보안성: 데이터베이스 연결 정보를 안전하게 관리합니다.
사용 예시:
Spring Boot에서 데이터소스를 설정하는 예시입니다:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("username");
dataSource.setPassword("password");
return dataSource;
}
}
풀링 (Pooling)
풀링(Pooling)은 데이터베이스 연결과 같은 리소스를 효율적으로 관리하기 위한 기술입니다. 풀링은 여러 개의 연결을 미리 생성해두고, 필요할 때마다 이를 재사용함으로써 성능을 크게 향상시킵니다.
주요 특징:
- 성능 향상: 새로운 연결을 생성하는 오버헤드를 줄여 응답 시간을 단축합니다.
- 자원 관리: 한정된 자원을 보다 효율적으로 관리합니다.
- 신뢰성: 연결을 지속적으로 모니터링하고 문제가 발생하면 새로운 연결로 교체합니다.
사용 예시:
Spring Boot에서 HikariCP와 같은 연결 풀을 사용하는 예시입니다:
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DataSourceConfig {
@Bean
public HikariDataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setDriverClassName("com.mysql.cj.jdbc.Driver");
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("username");
config.setPassword("password");
config.setMaximumPoolSize(10); // 최대 풀 크기 설정
return new HikariDataSource(config);
}
}
위의 예시에서 HikariCP는 매우 빠르고 경량화된 커넥션 풀 구현체로 널리 사용됩니다.
요약:
- 데이터소스(DataSource)는 데이터베이스 연결을 설정하고 관리하는 객체로, 더 유연하고 관리하기 쉬운 방법을 제공합니다.
- 풀링(Pooling)은 여러 연결을 미리 생성해두고 필요할 때마다 이를 재사용하여 성능을 향상시키는 기술입니다.
Share article