- Driver Manager를 사용하게 되면 DB Connection을 매번 획득해야 한다.
- 이렇게 커넥션을 새로 만드는 것은 과정도 복잡하지만 시간도 많이 소요된다.
- 매번 리소스를 사용해야 됨.
- 고객이 사용시 SQL을 실행하는 시간 뿐 아니라 커넥션을 새로 만드는 시간이 추가돼서 응답 속도에 영향을 주고 이는, 고객에게 좋지 않은 경험을 줄 수 있음.
- 해결 방법은 커넥션을 미리 생성해두고 사용하는 '커넥션 풀' 이라는 방법이다.
커넥션 풀
커넥션 풀에 들어 있는 커넥션은 TCP/IP로 DB와 커넥션이 연결되어 있는 상태로 언제든지 즉시 SQL을 DB에 전달가능.
커넥션 풀 사용
커넥션을 새로 맺는 것이 아니라, 이미 맺어진 것을 조회하고 획득하는 형태.
다 쓰고 커넥션을 끊는 것이 아니라 그대로 반환하면 됨.
데이터 소스
커넥션을 획득하는 방법
- 커넥션을 획득할 때 기존에 DriverManager를 통해서 사용하다 커넥션 풀로 방법을 바꿔서 커넥션을 획득하거나
- 혹은, 기존 커넥션풀에서 다른 커넥션풀을 사용하려 바꾸려 한다면 모두
- 애플리케이션 로직 코드를 바꿔야 한다.
위 와 같은 상황을 방지하기 위해서는 어떻게 해야될까?
커넥션 획득 방법을 추상화 [Data Source]
- DataSource는 커넥션을 획득하는 방법을 추상화하는 인터페이스이다.
- 이 인터페이스의 핵심 기능은 커넥션 조회 하나이다.
- 대부분의 커넥션 풀은 Data Source 인터페이스를 이미 구현해두었다.
- 따라서 개발자는 HikariCP, DBCP2 커넥션 풀들에 대한 의존을 하는 것이 아니라, DataSource 인터페이스에만 의존하도록 로직 작성하면 된다.