Database ( DB )/Database

[Spring 3.2.8 + maven + mybatis 3.2.2 + mybatis-spring 1.2.0]hikariCP 사용하기

노루아부지 2019. 8. 11. 10:19

hikaricp(히카리 커넥션풀)은 빠른 속도로 인해 점점 더 주목 받고 있는 커넥션 풀입니다.

 

공식 홈페이지 : https://github.com/brettwooldridge/HikariCP

 

brettwooldridge/HikariCP

光 HikariCP・A solid, high-performance, JDBC connection pool at last. - brettwooldridge/HikariCP

github.com

위 홈페이지 내용을 보면 "현존하는 가장 빠른 커넥션 풀" 이라고 소개하고 있습니다.

 

또한 안정성도 보장됩니다. boneCP의 경우 히카리로 인해 개발을 중단한다고 써져 있습니다.

 

설치 및 사용 방법은 아래와 같습니다.

 

1. pom.xml 설정 ( maven 설정 )

 

1) HikariCP 추가 ( 여기서 버전은 JAVA 버전에 맞게 써줘야 합니다. )

 

2) mybatis 추가

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.3</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.2.0</version>
</dependency>

 

2. jdbc-context.xml 내용 작성

 

/webapp/WEB-INF/spring/jdbc-context.xml 파일 생성 후 아래 내용 작성

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:tx="http://www.springframework.org/schema/tx" 
        xmlns:aop="http://www.springframework.org/schema/aop"
          xmlns:p="http://www.springframework.org/schema/p"
          xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
    
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>/WEB-INF/spring/jdbc.properties</value>
            </list>
        </property>
    </bean>
 
    <!-- Hikari CP 설정 -->
    <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
        <constructor-arg>
            <bean class="com.zaxxer.hikari.HikariConfig">
                <constructor-arg>
                    <props>
                        <prop key="dataSource.url">${dataSource.url}</prop>
                        <prop key="dataSource.user">${dataSource.user}</prop>
                        <prop key="dataSource.password">${dataSource.password}</prop>
                    </props>
                </constructor-arg>
                <property name="dataSourceClassName" value="${property.dataSourceClassName}" />
                <property name="autoCommit" value="false" />
                <property name="idleTimeout" value="${property.hikari.idleTimeout}" />
                <property name="maximumPoolSize" value="${property.hikari.maximumPoolSize}" />
                <property name="connectionTestQuery" value="SELECT 1 from dual" />
                <property name="maxLifetime" value="${property.hikari.maxLifetime}" />
            </bean>
        </constructor-arg>
    </bean>
    
    <!-- transaction 설정 -->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" />
    
    <tx:annotation-driven transaction-manager="txManager" />
    
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception,BizException" />
            <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception,BizException" />
        </tx:attributes>
    </tx:advice>
    
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.youn.test..service.*.*(..))" />
      </aop:config>
      
    <!-- mybatis 설정 -->
      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"    
    p:dataSource-ref="dataSource"
    p:typeAliasesPackage="com.youn.test" 
    p:mapperLocations="classpath*:com/youn/test/maria/*.xml" />
      
      <bean id="sqlMapMysql" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory" />
      </bean>
    
</beans>

 

3. properties 작성 ( 여기서는 DB를 mysql(mariadb) 사용 )

( 생략하고 xml 파일에 직접 값을 써도 됩니다. )

 

jdbc-context.xml와 같은 경로에 jdbc.properties을 생성하고 아래와 같이 작성합니다.

 

dataSource.url=jdbc:mysql://[DB IP]:[DB port]/[접속 DB]?useUnicode=yes&amp;characterEncoding=utf-8
dataSource.user=[DB 계정]
dataSource.password=[DB 계정의 비밀번호]
property.dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
property.hikari.maximumPoolSize=10
property.hikari.idleTimeout=3600000
property.hikari.maxLifetime=1800000

 

728x90

'Database ( DB ) > Database' 카테고리의 다른 글

파티션테이블 제약사항  (0) 2019.08.11
[centos 7] mariadb 설치  (0) 2019.08.11
[mysql] utf-8 procedure나 function에서 한글 깨짐 문제  (0) 2019.08.11
[Oracle] MView (Materialized Views)  (0) 2019.08.11
[oracle] hint  (0) 2019.08.11
loading