최대 1 분 소요

커넥션 풀

DB에서 커넥션 요청이 들어올 때마다 새 커넥션을 생성해서 반환해주는 과정을 거치면 생성부터 반환까지 전과정을 거치는데 시간이 오래 걸린다. 요청마다 새 커넥션을 만들지 말고 미리 여러개 만들어두고 요청이 들어올 때마다 제공할 수 있는데, 이렇게 커넥션을 관리하는 곳을 커넥션 풀이라고 한다. 모두 사용한 커넥션은 커넥션 풀에 반환하고 이렇게 반환된 커넥션은 재사용 가능하다.

DataSource

JDBC에서 커넥션을 얻을 때 DriverManager을 거치는 방법이 있다. 이 때 커넥션 풀을 사용한다면 DBCP2, HikariCP 등을 사용할 수 있겠으나 애플리케이션 로직을 각각에 의존하는 코드로 수정해줘야 한다는 번거로움이 존재한다. 이런 수고를 덜기 위해서 자바에서는 DataSource라는 인터페이스를 제공해 커넥션을 얻는 방법을 추상화했다.

public interface DataSource {
    Connection getConnection() throws SQLException;
}
  • getConnection() : 커넥션을 얻는 함수

때문에 DBCP2, HikariCP 모두 DataSource를 구현해 커넥션을 얻을 때는 getConnection()를 호출해서 얻을 수 있다!
그래서 다른 커넥션 풀로 바꿔갈 때 애플리케이션 로직을 각 커넥션 풀에 의존하는 코드로 수정할 필요가 없게된다.

참고로 위에서 언급한 DriverManagerDataSource를 구현하지 않았기 때문에 getConnection()으로 커넥션을 얻지 못한다.
대신에 DriverManagerDataSourceDataSource를 구현한 클래스로 DBCP2, HikariCP처럼 같은 방식으로 커넥션을 얻을 수 있다.

카테고리:

업데이트:

댓글남기기