Connection을 미리 생성하두고 재사용하는 기술
사용자 요청시 애플리케이션 로직에서는 DB 드라이버를 통해 새로운 커낵션을 획득하는 것이 아니라, 커넥션 풀을 통해 이미 생성되어 있는 커넥션을 객체 참조로 가져와 사용하게 된다
-애플리케이션 로직은 커넥션을 사용해서 SQL을 데이터 베이스에 전달하고 그 결과를 받아 처리한다
-그리고 커낵션을 모두 사용하고 나면 커넥션을 종료하는 것이 아니라, 재사용할 수 있도록 커낵션 풀에 반환하게 된다
<aside> 💡 이때 주의할 점은 커넥션을 종료하는 것이 아니라 커넥션이 살아있는 상태로 커넥션 풀에 반환해야 한다는 것이다
</aside>
-대표적인 커넥션 풀 오픈소스는 commons-dbcp2, tomcat-jdbc pool, HikariCP 등이 있다
Connection 획득 방법에 대해 추상화 하는 인터페이스
public interface DataSource {
Connection getConnection() throws SQLException;
}
-개발자는 DataSource 인터페이스 의존하는 애플리케이션 로직을 작성하면 된다
-DataSource 인터페이스를 의존하고 있기 때문에 커넥션 풀 구현 기술을 변경하고 싶으면 구현체만 갈아 끼우면 된다
→ DriverManagerDataSource 경우 스프링에서 지원하는 DataSource 구현체이고, 커넥션 풀을 지원하지 않고 매번 신규 커넥션을 생성하여 반환한다