이번 포스팅에서는 HikariCP로 DB에 접속해보고 springframework의 jdbc driver와의 속도 차이를 확인해보도록 하겠습니다.
springframework의 jdbc 설정은 다음 링크를 참조하시기 바랍니다.
[JDBC] Spring Maven 프로젝트에 MS-SQL Server 2019 JDBC Driver 설정 방법
이번 포스팅에서는 Spring Maven 프로젝트를 생성 후 MS-SQL과 연결하는 과정을 설명드리겠습니다. MS SQL Server 2019 JDBC Driver 정보가 있는 다음 사이트에 접속합니다. docs.microsoft.com/en-us/sql/connec..
grand-unified-engine.tistory.com
JUnit 테스트 환경은 다음을 참조하시기 바랍니다.
2020/12/14 - [프로그래밍/Spring Framework] - [JUnit] JUnit으로 테스트 환경 설정하기
[JUnit] JUnit으로 테스트 환경 설정하기
안녕하세요 이번 포스팅에서는 이클립스에 JUnit 라이브러리를 추가하고 JUnit 테스트를 할 수 있게 환경을 구성해보겠습니다. 1. Maven Dependancies 추가 JUnit 테스트를 하기 위해서는 두 가지 라이브
grand-unified-engine.tistory.com
springframework의 jdbc 설정은 Spring Bean Configuration File에 다음과 같이 입력합니다.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config/db.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
테이블 한개 조회하는 시간을 측정하기 위해 JUnit 테스트를 생성하도록 하겠습니다.
프로젝트 선택 후 마우스 오른쪽 -> New ->JUnit Test Case를 클릭하고 자바 파일을 생성합니다.
다음과 같이 코드를 입력합니다.
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/root-context.xml"})
public class dataSourceSpeedTest {
@Autowired
private ApplicationContext context;
@Test
public void test() {
Connection conn = null;
Statement state = null;
long start = System.currentTimeMillis();
DataSource ds = (DataSource) context.getBean("dataSource");
try {
conn = ds.getConnection();
state = conn.createStatement();
String sql; //SQL문을 저장할 String
sql = "SELECT * FROM 테이블명 ";
ResultSet rs = state.executeQuery(sql); //SQL문을 전달하여 실행
while(rs.next()){
String dpt_cd = rs.getString("DPT_CD"); //조회하려는 필드1
String dpt_nm = rs.getString("DPT_NM"); //조회하려는 필드2
System.out.println("dpt_cd: "+ dpt_cd + "\ndpt_nm: " + dpt_nm);
}
rs.close();
state.close();
conn.close();
long end = System.currentTimeMillis();
long secDiffTime = (end - start);
System.out.println("조회시간 : "+secDiffTime/1e3 + "초");
} catch(Exception e){
//예외 발생 시 처리부분
}
}
}
<Ctrl> + <F11>로 빌드하면 콘솔 창에 다음과 같이 조회시간이 표시됩니다.
이번에는 Hikari Connection Pool로 DataSource를 연결 후 같은 소스로 조회시간을 측정해보도록 하겠습니다.
먼저 HikariCP 환경 설정을 위해 Maven Repository 사이트에 접속합니다.
Maven Repository: Search/Browse/Explore
yang-maven-plugin-spi Last Release on Dec 14, 2020
mvnrepository.com
검색창에 hikaricp를 입력하고 조회합니다.
Maven dependency 코드를 복사해서 pom.xml에 붙여넣기합니다.
Spring Bean Configuration File에 다음과 같이 Hikari Connection Pool 정보를 입력합니다.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config/db.properties</value>
</list>
</property>
</bean>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"/>
</bean>
다시 JUnit Test 소스를 실행해보도록 하겠습니다.
자바 파일을 선택 후 <Ctrl> + <F11>을 누릅니다.
조회시간이 0.204초가 나옵니다.
springframework의 jdbc로 설정했을 때보다 무려 3% 밖에 시간이 안 걸리는 것을 확인할 수 있습니다.
조건별로 다른 결과가 나오겠지만 Hikari Connection Pool을 사용하면 시간을 꽤 단축시킬 수 있을 것이라 판단됩니다.
지금까지 Hikari Connection Pool로 DB접속할 수 있게 환경을 구성하고 springframework의 jdbc 와 테이블 Full Scan할 때 시간을 비교해보았습니다.
'Programming > Spring Framework' 카테고리의 다른 글
[MockMvc] Spring Framework servlet test(VO에 임의 데이터만 넣고 controller 테스트) (0) | 2020.12.23 |
---|---|
[MyBatis] Spring Framework에 마이바티스(MyBatis) 설정하기 (0) | 2020.12.16 |
[JUnit] 스프링프레임워크(SpringFramework) 메이븐(Maven) 테스트 환경 설정 (0) | 2020.12.14 |
[JDBC] Spring Maven 프로젝트에 MS-SQL Server 2019 JDBC Driver 설정 방법 (0) | 2020.12.11 |
[STS4] The all-new Spring Tools Suite 4 설치(windows기준) (0) | 2020.12.10 |