반응형

DBCP(Database Connection Pooling)란 무엇인가?

**DBCP(Database Connection Pooling)**는 데이터베이스 연결을 효율적으로 관리하기 위해 사용되는 기술입니다. 데이터베이스와의 연결은 생성과 종료 시 큰 비용이 소모되는데, DBCP는 연결을 미리 생성해두고 재사용함으로써 성능을 향상시킵니다.


왜 DBCP가 필요한가?

  1. 성능 향상:
    • 매번 새로운 연결을 생성하는 비용을 절감합니다.
  2. 리소스 관리:
    • 일정 개수 이상의 연결 생성을 방지하여 데이터베이스 과부하를 방지합니다.
  3. 스레드 안전성:
    • 다중 스레드 환경에서도 안전하게 연결을 관리합니다.

HikariCP란?

HikariCP는 자바에서 가장 널리 사용되는 고성능 커넥션 풀 라이브러리입니다. 속도와 효율성이 뛰어나고 설정이 간단하다는 장점이 있습니다.

주요 특징:

  1. 가볍고 빠름: 낮은 대기 시간과 높은 처리량을 제공합니다.
  2. 효율적인 자원 관리: 연결 누수를 감지하고 빠르게 복구합니다.
  3. 유연한 설정: 다양한 설정 옵션으로 요구 사항에 맞는 커넥션 풀을 구성할 수 있습니다.

HikariCP를 이용한 자바 구현 예제

1. Maven 의존성 추가

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version>
</dependency>

2. HikariCP 설정과 데이터베이스 연결

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class HikariCp {
    private static HikariDataSource dataSource;

    static {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mariadb://localhost:3306/dbname");
        config.setUsername("username");
        config.setPassword("userpwd");
        config.addDataSourceProperty("cachePrepStmts", "true");
        config.addDataSourceProperty("prepStmtCacheSize", "250");
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
        config.setMinimumIdle(5);
        config.setMaximumPoolSize(10);

        dataSource = new HikariDataSource(config);
    }

    private HikariCp() {
    }

    public static DataSource getDataSource() {
    	return dataSource;
    }

    public static Connection getConnection() throws SQLException {
    	return dataSource.getConnection();
    }

    public static void main(String[] args) {
        String query = "SELECT * FROM users WHERE id = ?";

        try (Connection connection = HikariCp.getConnection();
            PreparedStatement preparedStatement = connection.prepareStatement(query)) {

            preparedStatement.setInt(1, 1);
            ResultSet resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                System.out.println("User ID: " + resultSet.getInt("id"));
                System.out.println("Username: " + resultSet.getString("username"));
            }

        } catch (SQLException e) {
	        e.printStackTrace();
        }
    }
}

3. 주요 설정 옵션

  • setJdbcUrl: 데이터베이스 URL 설정.
  • setUsername: 데이터베이스 사용자 이름.
  • setPassword: 데이터베이스 비밀번호.
  • setMinimumIdle: 유지할 최소 유휴 연결 수.
  • setMaximumPoolSize: 커넥션 풀에서 허용하는 최대 연결 수.
  • addDataSourceProperty: 데이터베이스 연결 속성 추가.

활용 예시

1. 사용자 인증 시스템

  • 로그인 요청 시 사용자 정보를 데이터베이스에서 빠르게 조회.

2. 대용량 데이터 처리

  • 다중 스레드 환경에서 데이터 분석 작업 수행.

3. 실시간 데이터 처리

  • 대기 시간이 중요한 실시간 애플리케이션에서 안정적인 데이터베이스 연결 제공.

결론

HikariCP를 활용한 DBCP는 자바 애플리케이션에서 데이터베이스 연결을 효율적으로 관리하는 데 필수적인 기술입니다. 간단한 설정으로 강력한 성능을 제공하며, 안정성과 확장성을 동시에 만족시킵니다. HikariCP를 프로젝트에 적용하여 더 나은 성능과 자원 관리를 경험해보세요!

 

반응형

'개발 부트캠프 > 백엔드' 카테고리의 다른 글

[Spring] @Controller와 @RestController의 차이  (0) 2025.02.10
[Spring] IoC & DI  (0) 2025.02.04
[Java] Servlet Filter  (0) 2025.01.16
[Java] JSON  (0) 2025.01.16
[Java] HTTP 요청 처리하기  (0) 2025.01.16

+ Recent posts