java, spring

Spring Project에 Connection Pool 설정하기 feat.HikariCP

isaac.kim 2021. 5. 13. 17:54
728x90
반응형

Spring Project에 Connection Pool 설정하기 feat.HikariCP

 

※커넥션 풀은 여러 종류가 있지만, 요즘 좋은 성능을 보이며 많이 사용된다고 하는 HikariCP 라이브러리를 사용해보도록 하겠습니다.

 

※ Connection pool,  커넥션 풀, 연결 풀

먼저 위키백과에서 커넥션 풀에 대한 설명을 읽고, 개념을 정리하시고 가면 좋겠습니다. 이번 글은 HikariCP 라이브러리 설정에 대한 글이므로 Connection pool에 대해 아주 자세하게 설명하지 않습니다.

연결 풀 또는 커넥션 풀(connection pool)은 소프트웨어 공학에서 데이터베이스로의 추가 요청이 필요할 때 연결을 재사용할 수 있도록 관리되는 데이터베이스 연결의 캐시이다. 연결 풀을 사용하면 데이터베이스의 명령 실행의 성능을 강화할 수 있다. 각 사용자마다 데이터베이스 연결을 열고 유지보수하는 것은 비용이 많이 들고 자원을 낭비한다. 연결 풀의 경우 연결이 수립된 이후에 풀에 위치해 있으므로 다시 사용하면 새로운 연결을 수립할 필요가 없어진다. 모든 연결이 사용 중이면 새로운 연결을 만들고 풀에 추가된다. 연결 풀은 사용자가 데이터베이스에 연결을 수립하는데까지 대기해야하는 시간을 줄이기도 한다. (출처 : 위키백과)

 

 

 

 

1. pom.xml에 HikariCP dependency 등록하기

*Maven Repo 웹 페이지에서 Maven dependency 소스를 복사하여, 스프링 프로젝트의 pom.xml 에 붙여넣습니다.

 

 

1) 구글 검색창에 maven repository 를 검색해서, mvnrepository.com 에 접속합니다.

 

2) MVN Repository 사이트에서 HikariCP를 검색한 후, HikariCP 이름을 클릭합니다.

 

3) 본인에게 필요한 버전을 아시면 해당 버전을 선택하셔서,

아래 Maven 박스 밑 <dependency>를 복사하여, 본인 프로젝트의 pom.xml에 붙여넣습니다.

pom.xml에 붙여넣기

 

4) 자신이 필요한 버전이 어떤 것인지 잘 모르는 경우 홈페이지에 접속해서 java버전에 따라 필요한 CP가 무엇인지 선택하여 <dependency>에 추가합니다.

5) 저는 java 8 버전을 사용하고 있어서 아래 소스를 복사+붙여넣기 했습니다.

 

 

2.  root-context.xml 안에 HikariCP <bean> 태그 정의 (HikariCP 라이브러리 설정)

최소한의 설정만 사용해 정의합니다.

 

아래 소스는 oracle db를 사용할 때 작성하는 소스입니다.

root-context.xml에 HikariConfig bean과 dataSource bean을 등록합니다.

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="driverClassName" 
    value="oracle.jdbc.driver.OracleDriver"></property>
    <property name="jdbcUrl"
    value="jdbc:oracle:thin:@localhost:1521:XE"></property>
    <property name="username" value="username"></property>
    <property name="password" value="password"></property>
</bean>
 
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
    destroy-method="close">
    <constructor-arg ref="hikariConfig"/>
</bean>

 

 

 

3. Connection Pool 테스트

1) 아래 테스트 코드를 작성하고, JUnit으로 테스트를 진행합니다.

package com.project.persistence;

import static org.junit.Assert.fail;

import java.sql.Connection;

import javax.sql.DataSource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import lombok.Setter;
import lombok.extern.log4j.Log4j;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DataSourceTests {
	
	@Setter(onMethod_ = { @Autowired })
	private DataSource dataSource;
	
	@Test
	public void testConnection() {
		try (Connection con = dataSource.getConnection()){
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			fail(e.getMessage());
		}
	}
}

 

2) JUnit 테스트 결과

HikariCP를 사용하여 Connection Pool 연결이 제대로 되고 있다면 다음과 같은 TEST 결과를 나타냅니다.

 

오늘은 Spring Project에 HikariCP 라이브러리를 설정하는 방법에 대해 알아보았습니다.

도움이 되셨다면 좋아요♡, 구독, 광고클릭 부탁드립니다!ㅎㅎ

728x90
반응형