HikariCP를 가지는 객체는 메모리에 하나만 있으면 좋겠다. 메모리에 하나만 있는 객체를 우리는 ‘싱글턴’ 객체라고 한다.
public class 클래스명 { //2) private static 하게 자기 자신 인스턴스를 참조하는 변수를 선언 private static 클래스명 instance = new 클래스명();
//3) 2에서 선언한 객체를 리턴하는 static메소드를 제공
public static 클래스명 getInstance(){
return instance;
}
//1) private 생성자를 만든다.
private 클래스명(){
// 초기화 코드
} }
사용방법
public class DBUtil {
private static HikariConfig config = null;
private static DataSource ds = null;
private static DBUtil instance = new DBUtil();
private DBUtil(){
String configFile = "/datasource.properties";
HikariConfig config = new HikariConfig(configFile);
// HikariConfig config = new HikariConfig();
// config.setDriverClassName("com.mysql.cj.jdbc.Driver");
// config.setJdbcUrl("jdbc:mysql://localhost:3306/connectdb?useUnicode=true&characterEncoding=UTF-8");
// config.setUsername("connect");
// config.setPassword("connect");
ds = new HikariDataSource(config);
}
public static DBUtil getInstance(){
return instance;
}
public Connection getConnection(){
Connection conn = null;
try {
conn = ds.getConnection();
}catch(Exception ex){
ex.printStackTrace(); // 로그를 남기는 코드가 있어야 한다.
throw new RuntimeException("DB연결을 할 수 없습니다.");
}
return conn;
}
public static void close(ResultSet rs, PreparedStatement ps, Connection conn){
try{ rs.close(); } catch(Exception ignore){}
close(ps, conn);
}
public static void close(PreparedStatement ps, Connection conn){
try{ ps.close(); } catch(Exception ignore){}
try{ conn.close(); } catch(Exception ignore){}
}
}