Datasource 란?

Max Kang·2022년 11월 18일
0

배경

커넥션을 얻는 방법에서는 다양한 방법 들이 존재한다.

  1. Driver Manager를 사용해 신규 커넥션을 생성하는 방법
  2. 커넥션풀에서 존재하는 커넥션을 가져오는 방법 (HikariCP)

만약 1번 방법으로 어플리케이션을 사용하다가, 2번 방법으로 교체하고 싶다면 어떻게 해야할까?

서로 의존관계(HikariCP vs Driver Manager)도 다를 뿐더러, 사용방법도 조금씩 상이하기때문에, 코드변경이 불가피 하다.
이러한 문제를 해결하기 위해 등장한 아이디어, 또는 인터페이스가 바로 javax.sql.DataSource 이다.

DataSource의 핵심은 커넥션 조회 기능을 추상화 한 인터페이스 라는 것이다.

  public interface DataSource {
    Connection getConnection() throws SQLException;
}

Key Points

  • 대부분의 커넥션 풀 (DBCP2,HikariCP) 들을 DataSource 인터페이스를 구현해놨다. 그렇기 때문에 해당 구현 기술을 변경하고 싶으면 구현체만 갈아 끼우면 된다.
  • DriverManager 의 경우 DataSource 인터페이스를 사용하지 않는다. 그렇기 때문에, Driver Manager 에서 DataSource 기반 커넥션풀을 사용하려면 관련 코드를 고쳐야 한다.
    이러한 문제점을 해결하기 위해 Spring은 DriverManagerDataSource 라는 DataSource를 구현한 객체를 제공한다.
profile
Software Engineer

0개의 댓글