스프링 DB 1편 - 데이터 접근 핵심 원리

김성훈·2022년 10월 12일
0

스프링 DB 인프런

목록 보기
8/8
post-thumbnail

DataSource

커넥션을 얻는 방법은 JDBC DriverManager 를 직접 사용하거나, 커넥션 풀을 사용하는 등 다양한 방법이 존재한다.

앞서 JDBC로 개발한 어플리케이션 처럼 DriverManager 를 통해서 커넥션을 획득하다가, 커넥션 풀을 사용하는 방법으로 변경 하려면 어떻게 해야할까.

어플리케이션 로직에서 DriverManager를 사용해서 커넥션을 획득하다가 HikariCP 같은 커넥션 풀을 사용하도록 변경하면 커넥션을 획득하는 어플리케이션 코드도 함께 변경해야 한다.

의존관계가 DriverManager에서 HikariCP로 변경되기 때문이다.

자바에서는 이런 문제를 해결하기 위해 javax.sql.DataSource 라는 인터페이스를 제공한다.

DataSource는 커넥션을 획득하는 방법을 추상화 하는 인터페이스이다.

이 인터페이스의 핵심 기능은 커넥션 조회 하나이다

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

정리

대부분의 커넥션 풀은 DataSource 인터페이스를 이미 구현해두었다.

따라서 개발자는 DBCP2 커넥션 풀 , HikariCP 커넥션 풀 의 코드를 직접 의존하는 것이 아니라 DataSource 인터페이스만 의존하도록 어플리케이션 로직을 작성하면 된다.

DriverManageDataSource 인터페이스를 사용하지 않는다.
따라서 DriverManager 는 직접 사용해야 한다.
따라서 DriverManager 를 사용하다가 DataSource 기반의 커넥션 풀을 사용하도록 변경하면 관련 코드를 다 고쳐야 한다.
이런 문제를 해결하기 위해 스프링은 DriverManagerDataSource 를 통해서 사용할 수 있도록 DriverManagerDataSource 라는 DataSource 를 구현한 클래스를 제공한다.

이처럼 자바는 DataSource를 통해 커넥션을 획득하는 방법을 추상화 했다.

이제 어플리케이션 로직은 DataSource 인터페이스에만 의존하면 된다.

덕분에 DriverManagerDataSource 를 통해서 DriverManager 를 사용하다가 커넥션 풀을 사용하도록 코드를 변경해도 애플리케이션 로직은 변경하지 않아도 된다.

<출처>

스프링 DB 1편 - 데이터 접근 핵심 원리

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard

profile
"한 명이 걷는 천 걸음 보다 천 명이 함께 걷는 한 걸음이 성공의 시작이고 완성이다"

0개의 댓글