티스토리 뷰

Spring

[Spring] DataSource 이해

hyuuny 2024. 12. 24. 06:30

커넥션을 획득하는 다양한 방법


DriverManager를 통해 커넥션 획득


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


DriverManager를 통해 커넥션 획득하다가 커넥션 풀로 변경시 문제


만약 DriverManager를 통해서 커넥션을 획득하다가, 커넥션 풀을 사용하는 방법으로 변경하려면 어떻게 해야할까? 예를 들어 애플리케이션 로직에서 DriverManager 를 사용해서 커넥션을 획득하다가 HikariCP 같은 커넥션 풀을 사용하도록 변경하면 커넥션을 획득하는 애플리케이션 코드도 함께 변경해야 한다. 의존관계가 DriverManager에서 HikariCP로 변경되기 때문이다. 그리고 둘의 사용법도 조금씩 다를 것이다.


커넥션을 획득하는 방법을 추상화


자바에서는 이런 문제를 해결하기 위해 DataSource라는 커넥션을 획득하는 방법을 추상화한 인터페이스를 제공한다. 다른 일부 기능도 포함되지만, DataSource의 핵심 기능은 커넥션 조회다.

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

대부분의 커넥션 풀은 DataSource 인터페이스를 이미 구현해두었다. 따라서 DBCP2 커넥션 풀, HikariCP 커넥션 풀의 코드를 직접 의존하는 것이 아니라 DataSource 인터페이스에만 의존하도록 애플리케이션 로직을 작성하면 된다. 만약 커넥션 풀 구현 기술을 변경하고 싶으면 해당 구현체로 갈아끼우기만 하면 된다.


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


DataSource

DriverManagerDataSource

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함