원본 본문으로 이동하기

스프링 HikariCP (커넥션풀) 적용

박용서 - 히카리 커넥션풀은 빠른 속도로인해 점점 더 주목받고 있는 커넥션풀입니다. https://github.com/brettwooldridge/HikariCP 위 주소에서 참고해 보실 수 있습니다. 0. 준비 저번 강의인 스프링 JPA 에서 다중 DB 사용하기 와 중복되는 부분이 많다보니 해당 강의에 나오는 부분들은 전부 생략하도록 하겠습니다. 스프링 JPA 에서 다중 DB 사용하기 https://gs.saro.me/#!m=elec&jn=751 1. pom.xml 설정 <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>2.4.6</version> </dependency> 2. properties 작성 Hikari 사이트에서도 볼 수 있지만 직접 설정할 수도 있고 여러가지 방법들이 있다보니 굳이 properties 에 작성해야하는 것은 아니지만, 필자는 설정들을 소스에 하드코딩하는 것이 아닌 파일이나 DB로 가지고있는 것을 선호하기 때문에 파일로 만들어보도록 하겠습니다. application.properties 가 있는 폴더에 HikariMySQL.properties 을 만들고 아래와 같이 적습니다. (MySQL을 예로 들었습니다.) # 데이터소스 클래스 위치 (드라이버가 아닙니다.!!) dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource # 접속 url dataSource.url=jdbc:mysql://<호스트>:<포트>/<db명>?useSSL=true&useUnicode=yes&characterEncoding=utf-8 dataSource.user=<계정> dataSource.password=<암호> # 옵션들 dataSource.cachePrepStmts=true dataSource.prepStmtCacheSize=100 dataSource.prepStmtCacheSqlLimit=2048 dataSource.useServerPrepStmts=true maximumPoolSize=10 각종 옵션은 아래 주소에서 확인 할 수 있습니다. https://github.com/brettwooldridge/HikariCP/wiki/Configuration 3. 연결 설정 - DataSource 를 만드는 부분이 이전강의와 다릅니다. - 여기서는 HikariMySQL.properties 를 통해 설정파일을 불러오고 있습니다. - 설정을 소스로 사용하거나 수동으로 넣어주고싶으신분들은 conf.load 대신 conf 에 직접 넣어주시면 됩니다. (공식사이트 참고) @Configuration @EnableJpaRepositories ( basePackages = "com.web.repository.mysql", entityManagerFactoryRef = "mysqlFactoryBean", transactionManagerRef = "mysqlTransactionManager" ) public class JdbcMysqlConfig { @Bean(name = "mysqlDataSource") public DataSource getDataSource() throws IOException { Properties conf = new Properties(); conf.load(DataSourceFactory.class.getClassLoader().getResourceAsStream("HikariMySQL.properties")); return new HikariDataSource(new HikariConfig(conf)); } @Bean(name = "mysqlFactoryBean") public LocalContainerEntityManagerFactoryBean getFactoryBean(EntityManagerFactoryBuilder builder) throws IOException { return builder.dataSource(getDataSource()).packages("com.web.domain.mysql").build(); } @Bean(name = "mysqlTransactionManager") PlatformTransactionManager getTransactionManager(EntityManagerFactoryBuilder builder) throws IOException { return new JpaTransactionManager(getFactoryBean(builder).getObject()); } } 실행 실행시에 아래와 같은 문구가 나오면 연결성공 - 시작 HikariPool-<번호> - Started. - 등록 Located MBean <DataSource빈이름>: registering with JMX server as MBean [com.zaxxer.hikari:name=<DataSource빈이름>,type=HikariDataSource] 이전 강의처럼 적당히 해당 패키지에 넣어서 처리하는 식으로 코드를 짠 후 작동시키면됩니다. - MySQL JDBC 스프링 자바