DataSource에 대한 이해

DataSource에 대한 이해

DataSource
[그림 1] Datasource (출처 : 참고1)

 

DataSource는 커넥션을 획득하는 방법을 추상화하는 인터페이스이다. 이 인터페이스의 핵심 기능은 커넥션 조회이다. 특히 자바에서는 javax.sql.DataSource라는 인터페이스를 제공해준다.

 

만약 사용자가 DriverManager를 통해 커넥션을 획득하다가 나중에 HikariCP 커넥션 풀을 이용하려고 하면 커넥션을 획득하는 애플리케이션 코드를 모두 변경해야 한다. 하지만 이 커넥션을 획득하는 방법을 추상화해놓은 DataSource 인터페이스를 이용한다면 해당 인터페이스의 구현체만 갈아 끼우면 된다. 

 

따라서 애플리케이션 로직은 DataSource 인터페이스에만 의존하도록 하면, 사용자는 커넥션을 획득하는 방법을 바꾸더라도 애플리케이션 로직을 변경하지 않아도 된다.

 

 

DB Connection Pooling

이러한 DataSource는 DB Connection Pooling 기능을 제공한다.  DB Connection Pooling은 커넥션 객체를 미리 만들어 저장해두었다가 요청시 꺼내 쓰는 기능을 뜻한다. 

 

커넥션을 맺고 끊는 과정이 줄어들기 때문에 속도와 성능이 좋아진다. 이러한 커넥션 풀을 관리하고, 커넥션 객체를 풀에서 꺼냈다 반환하는 과정을 DataSource가 담당한다.

 

DB 커넥션 풀에 대해서는 다음을 참고하자.

 

참고)

 

 

DB 커넥션 풀(Connection pool)이란? HikariCP란?

커넥션 비용 WAS(Web Application Server)와 데이터베이스 사이의 연결에는 많은 비용이 든다. MySQL 8.0을 기준으로 INSERT 문을 수행할 때 필요한 비용의 비율은 다음과 같다. 괄호 안의 숫자가 비율을 의

code-lab1.tistory.com

 

 

 

 

 

 


참고

 

1. 인프런 김영한 강의 ( https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1 )

 

반응형

댓글

Designed by JB FACTORY