7.DBCP(DataBase Conncetion Pool)
- 클라이언트와 서버 사이드인 웹 어플리케이션에서, 사용자의 요청에 따라 Connection이 생성된다면 수 많은 사용자가 요청을 했을 때 서버에 과부하가 걸리게 된다.
- 이러한 상황을 예방하기 위해 미리 일정 갯수의 Connection을 만들어 Pool에 저장을 하고, 사용자의 요청이 발생하면 Connection을 제공하고 사용자와의 연결이 종료된다면 Pool에 다시 반환하여 보관하는 것을 의미한다.
특징
- 여러 개의 DB Connection을 하나의 Pool에 모아놓고 관리한다.
- DB 커넥션 객체를 여러 개 생성한 뒤 Pool에 담아놓고 필요할 때 불러와서 사용한다.
- 만약, 빌려줄 수 있는 Connection이 없다면 Connection 객체가 반환할 때 까지 클라이언트는 대기 상태로 전환
- 사용이 끝난 커넥션 객체는 다른 작업에서 다시 사용할 수 있도록 Pool에 반환
- Pool을 만들어서 미리 생성한 여러 Connection 객체를 담아두고 클라이언트가 요청할 때 마다 하나씩 빌려주고, Pool을 만들어서 미리 생성한 여러 Connection 객체를 담아두고 클라이언트가 요청할 때 마다 하나씩 빌려준다.
- 클라이언트가 사용을 마친 후에는 Pool에 다시 Connection 객체를 반환하기 때문에 데이터베이스 접근 요청이 존재하더라도 새로운 Connection 객체를 생성할 필요가 없다.


DataSource란?
- DB와 관계된 커넥션 정보를 담고있으며 빈으로 등록하여 인자로 넘겨준다.
- 이 과정을 통해 Spring은 DataSource로 DB와의 연결을 획득한다.
- DB 서버와의 연결을 해준다.
- DB Connetion pooling기능
- 종류 : JDBC Driver vendor(MySQL, Oracle)별로 여러가지가 존재한다.
HikariCP와 datasource
ataSource는 데이터베이스 연결을 관리하고 제공하기 위한 표준 Java 인터페이스이며, HikariCP는 이 DataSource를 구현하여 데이터베이스 연결 풀링을 지원한다.