DATABASE

[DATABASE]JDBC와 DBCP

Sunwoo_bang 2021. 1. 22. 01:46

JDBC는 익히 들어봤는데, DBCP는 생소하지? 나도 그랬었다니까? 

JDBC부터 DBCP까지 한 번 알아보자!

[JDBC] 

Java Database Connectivity
JAVA에서 DB프로그래밍을 하기 위한 API

JDBC는 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스야.

응용프로그램과 DBMS간의 통신을 중간 역할을 하지.

 

1. DB 접속을 위한 JDBC 드라이버 로드
2. getConnection Method로 부터 DB 커넥션 객체를 얻음
3. PreparedStatement 객체 생성(쿼리생성)
4. excuteQuery를 실행해서 결과 반환.


이렇게 JDBC만 사용할 경우, DB에 연결할 때마다 객체를 계속 생성하게 돼.
사람들이 많이 접속하는 사이트에서 계속 객체를 생성하게 되면 서버가 객체를 생성하는데 리소스를 많이 써버리지.

서버가 다운될 수 도..?
이러한 현상을 해결하고자 '커넥션 풀'을 만들게 되었어.

 

 

[DBCP]

DataBase Connection Pool
커넥션 풀 라이브러리의 설정은 애플리케이션의 성능과 안정성에 영향을 미치는 핵심

WAS 실행 시 미리 일정량의 DB Connection 객체를 생성하고 Pool 이라는 공간에 저장해 두게 돼.
그리고 DB 연결 요청이 있으면, 이 Pool에서 Connection 객체를 가져다 쓰는 방식이지.

1. 웹 컨테이너(WAS)가 실행되면서 connection 객체를 미리 pool에 생성
2. HTTP 요청에 따라 pool에서 connection객체를 가져다 쓰고 반환


이와 같은 방식으로 물리적인 데이터베이스 connection(연결) 부하 줄이고 연결 관리하게 돼.

pool 안에 connection이 생성되어 있기 때문에 데이터베이스에 연결될 때마다 빌려다 사용하면 되기 때문에 

JDBC만 사용했을 때 일어나는 문제를 해결할 수 있지

 


참고

1. datamod.tistory.com/13

2. blue-mina.tistory.com/19

3. linked2ev.github.io/spring/2019/08/14/Spring-3-%EC%BB%A4%EB%84%A5%EC%85%98-%ED%92%80%EC%9D%B4%EB%9E%80/

4. ss-o.tistory.com/132

5. shs2810.tistory.com/18

6. d2.naver.com/helloworld/5102792

 

그 외 8여개 블로그 및 사이트 정독