JDBC는 Java Database Connectivity의 약자로 Database에 접속할 수 있게 하는 Java API이다. 어플리케이션과 데이터베이스를 연결해주는 인테페이스이다. 현재 김영한 강사님의 강의를 들으면서 공부중이다.
이런 식으로 동작하는데 어플리케이션에서 Driver를 통해서 1, 2, 3의 과정을 진행한다. Driver는 각 데이터베이스의 타입(PG,Oracle,Mysql)에 따라 연결하는 방법이 상이하다.
JDBC는 어플리케이션과 드라이버 사이에서 연결해주는 역할을 한다. 이때, 각기 다른 드라이버들을 DriverManager라는 객체를 통해서 통합관리한다.
DriverManager.getConnection()을 통해서 데이터베이스와 연결(Connection)을 할 수 있게 된다. 하지만 이런 방식은 연결요청을 할 때마다 Id, Password, Url등을 넣어요청을 하게 된다. 이렇게 되면 요청시간이 지연이 발생한다. 이러한 반복작업, 지연작업을 없에기 위해 있는 것이 Conntection Pool의 개념을 도입하게 된다.
컨넥션 풀은 매번 연결하는 작업을 최소화하기 위해 있다. 매번 커넥션 하기 보다 한번 연결해 놓고 계속 사용하는 것이다. 최초 컨넥션 이후, 그 컨넥션을 컨넥션 풀에 저장합니다. 그리고 SQL전달 요청을 받으면 컨넥션풀에 저장되어있는 컨넥션을 가져다 사용합니다. 그렇기 때문에 별도의 연결작업 없이(연결유지) 바로 SQL문을 전달할 수 있습니다(이전에는 요청할 때마다 커넥션을 요청해야했음). 커넥션 풀을 사용하게 되면서 설정과 사용을 분리해서 사용할 수 있게 됐습니다.
커넥션 풀을 사용하는 방법도 여러가지가 있다.
이렇게 여러가지 커넥션 풀이 있는데 커넥션 풀을 바꿀 때마다 어플리케이션의 코드 또한 변경해야 된다. 이런 번거로움을 해결하는 것이 DataSource
라는 추상화 인터페이스다. 커넥션을 획득하는 방법을 추상화 하는 인터페이스라고 생각하면 될 것이다.