IT/개발

Connection Pool 사용하기,[C3P0] VS [Commons-DBCP2]

Lyk 2021. 2. 19. 23:58
728x90
반응형

Connection Pool 이란 ?

 

연결 풀 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

내 정리

즉, DB Connection이 필요할 때 Connection Pool 에서 가져와 사용하도록 한다!

Connection Pool에서 연결 정보를 관리한다!

미리 접속할 수 있는 객체를 생성해 두고필요할 때마다 가져다 쓰는 방식

예를 들어, 많은 사용자가 한꺼번에 접속하게 되는 경우,

Connection 을 사용자 수 만큼 생성하고, close 하면 시스템에 부하를 주는데

Connection Pool은 Connection 수를 제한하고 Connection을 재사용하여

자원고갈을 막을 수 있다.


1. c3p0 사용법

pom.xml 에 의존주입 해주기

<!-- c3p0 - ConnectionPool -->
<dependency>
	<groupId>com.mchange</groupId>
	<artifactId>c3p0</artifactId>
	<version>0.9.5.4</version>
</dependency>

rootContext에 사용할 수 있게 명시해주기

	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" /> 
		<property name="user" value="userid" />
		<property name="password" value="userpw" />
		<property name="maxPoolSize" value="100" />
		<property name="maxIdleTime" value="600" />
		<property name="idleConnectionTestPeriod" value="300" />
		<property name="checkoutTimeout" value="5000" />
	</bean>

2. Apach commons dbcp2 사용법

참고링크 : sjh836.tistory.com/148

pom.xml 에 의존주입 해주기

<!-- commons-dbcp -->
<dependency>
	<groupId>commons-dbcp</groupId>
	<artifactId>commons-dbcp2</artifactId>
	<version>2.7.0</version>
</dependency>

rootContext에 사용할 수 있게 명시해주기

	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" /> 
		<property name="username" value="userid" />
		<property name="password" value="userpw" />
		<property name="initialSize" value="30"/>
		<property name="maxTotal" value="30"/>
		<property name="maxIdle" value="30"/>
		<property name="minIdle" value="30"/>
		<property name="maxWaitMillis" value="600" />
		<property name="testWhileIdle" value="true"/>
		<property name="timeBetweenEvictionRunsMillis" value="150000"/>
		<property name="numTestsPerEvictionRun" value="4"/>
		<property name="minEvictableIdleTimeMillis" value="-1"/>
	</bean>

(Maven Repository) 버전 확인하는 링크 : mvnrepository.com/

 

팀 프로젝트는 c3p0를 사용해보았기에 개인프로젝트에는 apache commons dbcp 를 사용해보기로 하였다!

 

예전에 apache commons dbcp가 c3p0 보다 성능에서 밀렸지만 dbcp2가 나오면서

성능이 향상되었다고 하여 사용해보기로 하였다!

 

둘 중 무엇을 사용할 지 고민하며 구글링 했던 링크들...

 

728x90
반응형