ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring에 커넥션풀(Connection Pool) 등록 - HikariCP
    Spring 2020. 10. 24. 14:26

    커넥션풀 이란?

    위의 그림처럼 풀(Pool) 속에 데이터 베이스와의 연결들을 미리 만들어 두고 

    데이터베이스에 접근시 풀에 남아있는 커넥션중 하나를 받아와서 사용한뒤 반환 하는 기법

     

    웹 애플리케이션의 경우 다수의 사용자가 데이터 베이스에 접근해야 하는 상황이 생겼을때

    사용자들이 요청할때마다 연결을 만들고 해제하는 과정을 진행하면 비효율적이다.

    따라서 커넥션풀을 이용하여 미리 여러 연결을 만들어놓고 필요한 사용자가 요청시

    미리 만들어 놓은 연결을 주는 형식인 커넥션 풀이 더욱 효과적임

     

     

    xml을 통해 빈을 등록할때는 아래의 코드를 사용하면 된다

    root-context.xml에 등록

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <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>
    cs

    그러면 스프링에 application context에는 다음 그림처럼 빈이 등록된다.

     

     

    이렇게 등록된 빈에서 dataSource 빈을 javax.sql.DataSource 인터페이스를 이용해 사용하면 된다.

     

    junit을 이용한 테스트시

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    package org.zerock.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());
            }
        }
     
    }
    cs

     

     

    출처:chocodrogba.tistory.com/5

    728x90
    반응형

    'Spring' 카테고리의 다른 글

    [Spring Security] 스프링시큐리티의 기본 개념과 구조  (1) 2020.12.01
    Spring MVC 패턴  (1) 2020.10.25
    [Spring] 스프링 어노테이션 종류  (1) 2020.10.17
    MyBatis란?  (0) 2020.09.28
    의존성 주입 테스트  (0) 2020.09.18

    댓글

Designed by Tistory.