본문 바로가기
Java , Spring/Java

[Java] 커넥션풀과 데이터소스(DataSource)

by 방배킹 2024. 1. 19.

데이터베이스 커넥션

  • 데이터베이스 커넥션을 얻기 위해서는 매우 복잡한 과정이 필요하다.(TCP/IP의 3 way handshake 등)
  • 데이터 베이스에 접근하기 위해 접근할때 마다 커넥션을 만들어서 사용하면 속도가 매우 느려진다.

 

커넥션풀

해당 문제를 해결하기위해 커넥션을 미리 생성해두고 필요할떄 해당 커넥션을 할당 받아 사용하는 커넥션풀  방식을 사용한다.

 

DataSource

  • DataSource는  커넥션을 획득하는 방법을 추상화한 인터페이스이다.
  • 커넥션을 얻는 방법이 변경될때 코드를 변경해야하는 문제를 해결하기 위해 DataSource 인터페이스를 만들었다.

  • 핵심 기능은 커넥션을 조회하는 getConnection 이다.
public interface DataSource {
 Connection getConnection() throws SQLException;
}

 

 

DataSource를 이용한 커넥션풀

import com.zaxxer.hikari.HikariDataSource;
void dataSourceConnectionPool() throws SQLException, InterruptedException {
    //커넥션 풀링: HikariProxyConnection(Proxy) -> JdbcConnection(Target)
    HikariDataSource dataSource = new HikariDataSource();
    
    dataSource.setJdbcUrl(URL);
    dataSource.setUsername(USERNAME);
    dataSource.setPassword(PASSWORD);
    dataSource.setMaximumPoolSize(10);
    dataSource.setPoolName("MyPool");
    
    useDataSource(dataSource);
    
    Thread.sleep(1000); //커넥션 풀에서 커넥션 생성 시간 대기
}

 

설정과 사용이 분리되어서 사용시에 정보를 입력할 필요가 없다.

 

 

 

Reference

댓글