Connection Pool ?
웹 컨테이너 (WAS)가 실행 되면서 DB와 미리 connection 연결 해 놓은 객체들을
pool 에 저장해두었다가, 클라이언트 요청이 오면 conncetion을 빌려주고, 처리가 끝나면
다시 connection을 반납받아 pool 에 저장하는 방식을 말한다.
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
sql = "SELECT * FROM T_BOARD"
// 1. 드라이버 연결 DB 커넥션 객체를 얻음
connection = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
// 2. 쿼리 수행을 위한 PreparedStatement 객체 생성
pstmt = conn.createStatement();
// 3. executeQuery: 쿼리 실행 후
// ResultSet: DB 레코드 ResultSet에 객체에 담김
rs = pstmt.executeQuery(sql);
} catch (Exception e) {
} finally {
conn.close();
pstmt.close();
rs.close();
}
}
위와 같이 드라이버(Driver)를 로드하고 커넥션(connection) 객체를 받아와야 한다.
그러면 매번 사용자가 요청할때 마다 드라이버를 로드하고 커넥션 객체를 생성하고 연결하고
종료하기에 매우 비효율적이다.
이와 같은 문제를 해결 하기 위해 DBCP 를 쓴다.
DateBase Connection Poll 약자로 DB 커넥션을 맺고 객체를 관리하는 역할을 한다.
Commons DBCP 스프링 설정
<bean id="dataSource-mysql"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${Globals.DriverClassName}"/>
<property name="url" value="${Globals.Url}" />
<property name="username" value="${Globals.UserName}"/>
<property name="password" value="${Globals.Password}"/>
<property name="maxActive" value="${Globals.maxActive}"/>
<property name="maxIdle" value="${Globals.maxIdle}"/>
<property name="maxWait" value="${Globals.maxWait}"/>
</bean>
pom.xml
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
'Spring Framework' 카테고리의 다른 글
Spring Framework 실행 순서 (0) | 2022.01.03 |
---|---|
Dependency Injection 이란 (0) | 2022.01.03 |