Kim VamPa

[Spring][04]커넥션 풀 설정(HikariCP) 본문

공부/스프링

[Spring][04]커넥션 풀 설정(HikariCP)

Kim VamPa 2020. 4. 10. 13:46
728x90
반응형

개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다.

git주소(Oracle DB) : https://github.com/sjinjin7/blog_study

git주소(MySQL DB) : https://github.com/sjinjin7/blog_study-MYSQL-base-


목표

 

  • "커넥션 풀"에 대한 개념은 다음 링크를 참고 부탁드립니다.
    https://kimvampa.tistory.com/44
  • 커넥션 풀은 spring-jdbc 라이브러리에서 제공하는 방식, Apache에서 제공하는 jdbc 등 여러 종류가 있습니다.
  • 이번 포스팅에선 여러 커넥션 풀 중에 "HikariCP"를 스프링 프로젝트에 적용시켜보겠습니다. 적용 후 정상적으로 작동하는지 테스트까지 하는 것이 해당 포스팅의 목적입니다.

목차

1. HikariCP 라이브러리 추가(+ DataSource 설정)

2. 테스트

 

1. HikariCP 라이브러리 추가와 DataSource 설정

  라이브러리 추가는 매우 간단합니다. pom.xml에 Maven코드를 추가만 시켜주면 되기 때문입니다. 하지만 라이브러리를 추가로만은 'HikariCP 커넥션 풀'을 사용할 수 없습니다. root-context.xml에 DataSource에 대한 설정을 추가해주어야만 '커넥션 풀' 사용이 가능합니다. 따라서 [1-1 라이브러리 추가 방법], [1-2 DataSource 설정 방법]순으로 알아보겠습니다.

 

* HicariCP는 Java 버전을 무엇을 쓰냐에 따라 다른 버전을 사용하여야 합니다. Java8 버전 경우 3.4.2 버전을 사용하면 됩니다. 다른 버전을 사용하실 경우 다음의 링크를 참고 부탁드립니다. 

https://github.com/brettwooldridge/HikariCP

 

1-1 HikariCP라이브러리 추가 방법

 1) Maven Repository 사이트에서 "HikariCP"를 검색하시면 제일 첫 항목을 클릭하시면 pom.xml(Maven 설정)에 추가할 수 있는 코드가 있습니다. 저는 Java8을 사용하기 때문에 3.4.2 버전을 선택하였습니다. Maven 코드를 복사합니다.

 

		<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
		<dependency>
		    <groupId>com.zaxxer</groupId>
		    <artifactId>HikariCP</artifactId>
		    <version>3.4.2</version>
		</dependency>	

 

그림 1-1
그림 1-2
그림 1-3

2) 복사한 코드를 프로젝트 pom.xml에 추가해주고 저장합니다. 라이브러리 추가가 완료되었습니다. 

그림 1-4

 

 

1-2 DataSource 설정 방법

1) root-context.xml 에 들어갑니다. 

그림 1-5

2) <bean> 태그를 정의해서 설정하겠습니다. 아래의 코드를 추가 후 저장해주시면 됩니다. 해당 코드들은 우리가 추가한 HikariCP 라이브러리에 있는 클래스를 <property> 태그를 이용해서 속성을 설정하는 방법입니다. 

- Oracle 데이터베이스 DataSource 설정 코드입니다.

- Oracle Plus에서 계정 로그인 시 'c##'이 필요한 버전의 경우 아래의 코드 "계정명"에도 'c##'을 붙여주어야합니다. 19버전 경우 'c##'을 계정명 앞에 붙여줄 필요가 없습니다.

	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
 		<property name="driverClassName" value="oracle.jdbc.pool.OracleDataSource"></property>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@URL주소:1521:시드명"></property> 
         <!-- Oracle 11g 경우 value="jdbc:oracle:thin:@URL주소:1521:XE" -->
         <!-- Oracle 19  경우 value="jdbc:oracle:thin:@URL주소:1521:orcl" -->
		<property name="username" value="계정명"></property>
		<property name="password" value="비밀번호"></property>
	</bean>	
	
	<bean id="datasource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
		<constructor-arg ref="hikariConfig"></constructor-arg>
	</bean>

그림 1-6

 

- MySQL 데이터베이스 DataSource 설정 코드입니다.

	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
 		<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/데이터베이스명?serverTimezone=Asia/Seoul"></property> 
		<property name="username" value="사용자명"></property>
		<property name="password" value="비밀번호"></property>
	</bean>	
	
	<bean id="datasource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
		<constructor-arg ref="hikariConfig"></constructor-arg>
	</bean>

그림 1-7

 

 

 

2. 테스트

 진행할 테스트는 스프링에 빈(Bean)으로 등록된 DataSource를 이용해서 Connection을 제대로 처리할 수 있는지를 확인하기 위한 용도입니다.

 

*테스트 코드는 root-context.xml에 DataSource를 설정하셨다면 데이터베이스 종류에 상관없이 실행이 됩니다.

 

1) 먼저 테스트를 위해 존재하는 src/test/ java 경로에 com.vam.persistence를 생성하시고 DataSourceTest.java 클래스를 생성합니다.

그림 2-1

2) 아래의 코드를 추가합니다.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class DataSourcetest {

	@Autowired
	private DataSource dataSource;
	
	@Test
	public void testConnection() {
		try(
			Connection con = dataSource.getConnection();	
		){
			
		System.out.println("con="+con);
			
		}catch(Exception e) {
			e.printStackTrace();
		}
		
	}	
	
}

그림 2-2

 

3. Junit 테스트를 진행합니다. 

그림 2-3

4. 결과를 확인합니다.

- Oracle

그림 2-4

 

- MySQL

그림 2-6

 

그림 2-7

 

 

 

 

Reference

 

Date

  • 2020.04.10 작성

 

 

 

 

728x90
반응형
Comments