자바 웹 어플리케이션( Java Web Application)에서 DB접속과 관련된 라이브러리가 JDBC와 DBCP 이다
JDBC는 Java DataBase Connectivity의 약자로 자바에서 데이터베이스에 연결하기 위한 인터페이스이다.
Oracle, MySQL, MsSQl 등 데이터 베이스는 JDBC를 사용하기 위한 각각의 Driver를 제공한다.
JDBC는 이 Driver를 통해 DB에 접속 한다.
그럼 JDBC만 있으면 DB접속이 되는데 DBCP는 왜쓸까? 라는 궁금증이 생기는데 답은 '효율' 이다.
효율적인 DB 커넥션을 위해 DBCP를 사용하는것
DBCP는 DataBase Connection Pool의 약자로 DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 한다.
JDBC만을 사용할 경우라면 DB접속 시에 아래와 같은 순서가 반복된다
1. DB접속을 위한 JDBC 드라이버 로드
2. getConnection Method로 부터 DB커넥션 객체를 얻음
3. 쿼리 수행을 위한 PreparedStatement 객체 생성
4. excuteQuery를 실행해서 결과를 받아옴
여기서 비효율적인 부분은 1번과 2번 입니다.
DB 연결 시 마다 Driver를 로드하고 커넥션 객체를 얻는 작업을 반복한다.
이 부분을 효율적으로 처리하도록 바꾸는 것이 DBCP의 역할이다.
DBCP를 사용하게 되면,
WAS 실행 시 미리 일정량의 DB Connection 객체를 생성하고 Pool이라는 공간에 저장해 둡니다.
그리고 DB연결 요청이 있으면, 이 Pool이라는 공간에서 Connection객체를 가져다 쓰고 반환 하게 된다.