상세 컨텐츠

본문 제목

[DBCP] HikariCP

Spring/DB 설정

by Chan.94 2021. 10. 12. 07:30

본문

반응형

-이전글-
[Spring Boot/DB 설정] - [Spring Boot] MySQL - Mybatis JAVA config


DBCP (DataBase Connection Pool)

DBCP는 DataBase Connection Pool 의 약자로 DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 한다.
DBCP를 사용하게 되면, WAS 실행 시 미리 일정량의 DB Connection 객체를 생성하고 Pool 이라는 공간에 저장해 둔다. 그리고 DB 연결 요청이 있으면, 이 Pool 이라는 공간에서 Connection 객체를 가져다 쓰고 반환 하게 한다.

DBCP를 사용하는 가장큰 이유는 효율성이다.


Connection Pool

Connection Pool

Connection Pool이란 Pool속에 Connection(DataBase와의 연결)을 미리 만들어 두고 DataBase에 접근시 Pool에 남아있는 Connection중 하나를 받아와서 사용한 뒤 반환하는 기법을 말한다.


HikariCP

HikariCP는 스프링 부트 2.0부터 설정된 default JDBC Connection Pool입니다.기존의 DBCP들 보다 빠르게 작업을 처리하고 가볍습니다.


application.yml

spring: 
    datasource: 
    	hikari: 
            driver-class-name: com.mysql.cj.jdbc.Driver 
            username: {id} 
            password: {password} 
            jdbc-url: jdbc:mysql://{url}:{port}/{db스키마} 
            minimum-idle: 5 
            maximum-pool-size: 10
            idle-timeout: 30000 
            pool-name: DevLogHikariCP 
            max-lifetime: 200000 
            connection-timeout: 30000 
            connection-test-query: /*CONNECTION TEST QUERY*/SELECT NOW() FROM DUAL

 

minimum-idle
Connection Pool에 유지 가능한 최소 커넥션 개수

maximum-pool-size
Connection Pool에 유지 가능한 최대 커넥션 개수

idle-timeout
Connection이 Poll에서 유휴상태(사용하지 않는 상태)로 남을 수 있는 최대 시간

 



pool-name
Connction Pool 이름

max-lifetime
Connection의 최대 유지 가능 시간

connection-timeout
Pool에서 Connection을 구할 때 대기시간, 대기시간안에 구하지 못하면 Exception

connection-test-query
Connection이 잘 되었는지 확인하는 TEST SQL


JAVA Config

@Configuration 
@MapperScan(basePackages = {"mapper들이 있는 패키지경로"}) 
public class DBConfiguration { 
    @Autowired 
    ApplicationContext applicationContext; 
    
    @Bean 
    @ConfigurationProperties(prefix="spring.datasource.hikari") 
    public HikariConfig hikariConfig() { 
    	return new HikariConfig(); 
    }
    
    @Bean 
    public DataSource dataSource() { 
    	DataSource dataSource = new HikariDataSource(hikariConfig()); 
        System.out.println("DataSource connection : " + dataSource.toString()); 
        return dataSource;
    } 
    
    @Bean 
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws IOException { 
    	SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); 
        factoryBean.setDataSource(dataSource); 
        factoryBean.setConfigLocation(applicationContext.getResource("classpath:/mybatis/mybatis-config.xml")); 
        factoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/**/*Mapper.xml")); 
        return factoryBean; 
    } 
    
    @Bean 
    public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) {
    	return new SqlSessionTemplate(sqlSessionFactory); 
    }
}


@ConfigurationProperties
application.yml에서 spring.datasource.hikari.* 에 해당하는 값들을 바인딩해준다.

반응형

'Spring > DB 설정' 카테고리의 다른 글

SpringBoot logback 파일적재  (2) 2021.10.27
SpringBoot logback / log4jdbc 설정  (4) 2021.10.19
Spring JPA란  (1) 2021.10.17
Spring AOP Transaction설정  (0) 2021.10.16
[Spring Boot] MySQL - Mybatis JAVA config  (2) 2021.10.10

관련글 더보기

댓글 영역

>