Spring

스프링 - 커넥션 풀 설정 (HikariCP)

마루설아 2025. 5. 20. 19:28

커넥션 풀 (Connection Pool)

데이터베이스 통신 시 매번 연결을 해야하는 것은 상당히 비효율적이다.

커넥션 풀은 여러 DB 연결을 만들어두고 필요할 때 이를 빌려서 사용할 수 있으며,

이는 데이터베이스의 속도가 향상되고 자원 관리에 효율적이다.

 

pom.xml에 HikariCP 추가 후 Maven Update

...

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.7.4</version>
</dependency>

...

 

 

 

root-context.xml에 아래 코드 추가 (Spring Bean 등록)

...

<!-- HikariCP 설정 -->
<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="maru"></property>
    <property name="password" value="1234"></property>
</bean>

<!-- HikariCP 설정 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
    <constructor-arg ref="hikariConfig" />
</bean>

...

 

 

JUnit 테스트를 위한 자바 테스트 클래스 작성

package com.myspring.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()){
			log.info(con);
			
		} catch(Exception e) {
			fail(e.getMessage());
		}
	}
}

 

 

테스트 클래스파일 우클릭 > Run As > JUnit Test

정상일 경우 아래 콘솔 로그 출력