DataSource 이해
커넥션을 얻는 방법은 앞서 학습한 JDBC 'DriveManager'를 직접 사용하거나, 커넥션 풀을 사용하는 등 다양한 방법이 존재한다.
![](https://velog.velcdn.com/images/eenaa/post/f0c7855c-d251-4539-95ed-c21239251189/image.png)
![](https://velog.velcdn.com/images/eenaa/post/68b84584-6728-43b0-9ce0-f3108615f847/image.png)
![](https://velog.velcdn.com/images/eenaa/post/4e8479e7-10b0-4d2d-8ff1-dbc8b3f134cb/image.png)
![](https://velog.velcdn.com/images/eenaa/post/792bf55d-acf6-4229-a9a9-a638964a8d3e/image.png)
정리
- 대부분의 커넥션 풀은 'DataSource' 인터페이스를 이미 구현해두었다. 따라서 개발자는 'DBCP2 커넥션 풀', 'HikariCP 커넥션 풀'의 코드를 직접 의존하는 것이 아니라 'DataSource' 인터페이스에만 의존하도록 애플리케이션 로직을 작성하면 된다.
- 커넥션 풀 구현 기술을 변경하고 싶으면 해당 구현체로 갈아끼우기만 하면 된다.
- 'DriverManager'는 'DataSource'인터페이스를 사용하지 않는다. 따라서 'DriverManager'는 직접 사용해야 한다. 따라서 'DriverManager'를 사용하다가 'DataSource'기반의 커넥션 풀을 사용하도록 변경하면 관련 코드를 다 고쳐야 한다. 이런 문제를 해결하기 위해 스프링은 'DriverManager'도 'DataSource'를 통해서 사용할 수 있도록 'DriverManagerDataSource'라는 'DataSource'를 구현한 클래스를 제공한다
- 자바는 'DataSource'를 통해 커넥션을 획득하는 방법을 추상화했다. 이제 애플리케이션 로직은 'DataSource'인터페이스에만 의존하면 된다. 덕분에 'DriverManagerDataSource'를 통해서 'DriverManager'를 사용하다가 커넥션 풀을 사용하도록 코드를 변경해도 애플리케이션 로직은 변경하지 않아도 된다.
출처 :https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-db-1&unitId=110071&tab=curriculum