본문 바로가기

JAVA/JDBC

[JDBC] (이클립스) 히카리CP(HikariCP) 설정하기

<들어가기에 앞서>

아직 생으로 배우는 단계라 메이븐이나 그레이들을 사용하지 않는 상황에서 예제 등을 따라하다가 오류가 난다면 보통 거의 다 라이브러리 임포트가 안된 상황이다. 아래 글 참고.

https://codevision.tistory.com/7

 

[JDBC] (이클립스/MVC) 서블릿에서 DB 연결이 안될 때 (혹은 서버에서만 오류날 때)

https://blog.opid.kr/395 [Servlet] 서블릿 DB 연결 문제 실행환경 Desktop 조립식 CPU Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz Memory 8.00 GB OS Windows 7 Professional K 64bit Java 1.8.0_05 MySQL Ver 14.14 Distrib 5.6.19, for Win64 Web S

codevision.tistory.com

 

<1. 히카리CP 불러오기>

본인은 5.0 버전을 받았다. 위에서 언급한대로 라이브러리를 관리해주지 않고 생으로 코딩중일 땐 프로젝트 빌드 패스와 함께 WEB-INF라이브러리 폴더에도 임포트해야한다.

https://mvnrepository.com/artifact/com.zaxxer/HikariCP

 

<2. 히카리CP enum 작성>

DB연결풀 같은 경우 어디서나 불러와야하기때문에 상수를 담는 enum으로 작성한다. 드라이버, url, ID, PW 본인 환경에 맞게 작성한다.

package todo.dao;

import java.sql.Connection;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

public enum ConnectionUtil {
	
	INSTANCE;
	private HikariDataSource ds;
	ConnectionUtil(){
		HikariConfig config = new HikariConfig();
		config.setDriverClassName("org.mariadb.jdbc.Driver");
		config.setJdbcUrl("jdbc:mariadb://localhost:3306/webdb");
		config.setUsername("root");
		config.setPassword("0000");
		config.addDataSourceProperty("cachePrepStmts", "true");
		config.addDataSourceProperty("prepStmtCacheSize", "250");
		config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
		ds = new HikariDataSource(config);
	}
	public Connection getConnection() throws Exception{
		return ds.getConnection();
	}
}

 

<3. 히카리CP 테스트>

히카리CP를 테스트할 수 있는 간단한 메소드를 하나 만든뒤 컴파일한다.

package todo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import lombok.Cleanup;

public class HikariTest {

	public String getTime() {
		String now = null;
		try(Connection connection = ConnectionUtil.INSTANCE.getConnection();
				PreparedStatement pstmt = connection.prepareStatement("select now()");
				ResultSet rs = pstmt.executeQuery();
		){
			rs.next();
			now = rs.getString(1);
		}catch(Exception e){
			e.printStackTrace();
		}
		return now;
	}
	public static void main(String[] args) throws Exception {
		System.out.println(new HikariTest().getTime()); 
		System.out.println(new HikariTest().getTime2()); 
	}
}

허나 콘솔창엔 오류만이 가득한데...대충 읽어보자면 slf4j라는 라이브러리의 클래스 정의를 찾아볼 수 없다는 얘기이다. 그렇다면 콘솔창 말대로 라이브러리를 깔아주러 간다.

 

<4. SLF4J 라이브러리 설치>

https://mvnrepository.com/artifact/org.slf4j/slf4j-api

사실 SLF4J API라이브러리만 깔아줘도 되나, 히카리CP 연결시 콘솔창에 로그 관련 경고가 나온다. (오류X) 이게 꼴보기 싫으면 SLF4J SIMPLE 라이브러리를 찾아 깔아준다.

 

<5. 히카리CP 다시 테스트>

시간이 예쁘게 잘 나온다. 덧붙여 롬복에 @Cleanup 어노테이션을 사용하면 지저분한 try-catch문등의 예외처리문 없이 문장을 깔끔하게 작성할 수 있다.

 

728x90