is Data.

JSP JDBC ConnectionPool(커넥션 풀)과 DBCP

커넥션 풀 기법은 데이터베이스와 연결된 커넥션을 미리 만들어 Pool속에 저장해 두고 필요할 때 커넥션을 풀에서 가져다 쓰고
다 쓴 후에 다시 풀에 반환하는 기법을 말한다.
 
ConnectionPool 사용시 이점
 
(1)풀 속에 커넥션이 미리 생성되어 있으므로 커넥션을 생성하는데 드는 연결시간이 소비되지 않는다.
(2)커넥션의 재사용이 가능하다.(전체적인 웹 어플리케이션 성능 및 처리량 증대)
 
 
1.DBCP[Database Connection Pool]
 
DBCP API를 사용하기 위한 과정은 아래와 같다.
 
(1)DBCP관련 jar 파일 및 JDBC 드라이버 설치
(2)커넥션 풀 설정 파일 초기화
(3)커넥션 풀 관련 드라이버 로딩
(4)커넥션 풀 사용
 
commons-dbcp-x.x.x.jar 파일과
commons-pool-x.x.jar 파일을 어플리케이션 하위의 WEB-INF\lib 디렉터리에 복사해 주어야 한다.
 
위 두개의 jar파일을 복사해 주었다면 커넥션 풀 설정 파일을 작성해야 한다.
/****
DBCPCONFIG.jocl
****/
<object class="org.apache.commons.dbcp.PoolableConnectionFactory"
        xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
 
    <object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
        <string value="jdbc:mysql://localhost:3306/DBNAME?useUnicode=true&characterEncoding=euckr"/>
        <string value="USER"/>
        <string value="PASSWORD"/>
    </object>
    
    <object class="org.apache.commons.pool.impl.GenericObjectPool">
        <object class="org.apache.commons.pool.PoolableObjectFactory" null="true" />
    </object>
    
    <object class="org.apache.commons.pool.KeyedObjectPoolFactory" null="true"/>
    
    <string null="true"/> //커넥션 유효성 검사
    
    <boolean value="false"/> //읽기전용으로 할 것인지 여부
    
    <boolean value="true"/> //커넥션을 오토커밋 모드로 할 것인지 여부
</object>
 
위의 파일은 DBCPCONFIG.jocl 파일로써 DBCP설정 파일의 예이다.
이 DBCP 커넥션 풀 설정 파일은 XML문서로 처리되는 점에 유의해야한다.
구문중 &(엠퍼샌드)를 &amp; 로 표기한 내용이 있는데 이것은 xml에서의 표기방식이다.
DBCP API는 웹 어플리케이션 클래스 패스로부터 jocl설정 파일을 검색하므로 WEB-INF\classes 디렉터리에 넣어주어야 한다.
(eclipse를 통해 개발할 때에는 src 폴더 하위에 넣어주면 된다.)


2.커넥션 풀 초기화
 
커넥션 풀을 초기화 하기 위해선 DBMS에 연결할 JDBC드라이버와 DBCP API의 JDBC드라이버가 로딩 되어야 한다.
<%
   Class.forName("com.mysql.jdbc.Driver");
   Class.forName("org.apache.commons.dbcp.PoolingDriver");
%>
 
MySQL을 사용하는 경우의 JDBC로딩과 DBCP JDBC드라이버 로딩을 보여주고 있다.
 
 
3.커넥션 사용
 
DBCP를 통해 커넥션을 생성할 때 JDBC URL이 조금 다른 것 외엔 DriverManager를 통해 커넥션을 생성하고 이후 사용하는 것은
동일하다.
jdbc:apache:commons:dbcp:/DBCPCONFIG
DriverManager.getConnection() 메서드를 통해 jdbcurl을 매개변수로 커넥션을 생성한다.
JDBC 데이터베이스 프로그래밍 -> http://hyunc87.tistory.com/36
다른점은 DBCP설정파일은 DBCPCONFIG.jocl 의 확장자를 뺀 설정파일 이름이 풀이름으로 사용된다는 것이다.
<%
   Connection conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:/DBCPCONFIG")
%>
DBCP를 통해 커넥션을 얻어오는 구문은 위와 같다.