JAVA Tip
hikari 를 이용한 DB Connection
cookieangelo
2024. 3. 5. 10:55
보통 Spring Boot 나 Spring 으로 작업을 할때 DB 연결은 설정파일에 DB 정보를 넣고 연결을 시도합니다.
그러나 DB정보가 정해지지 않은 DB정보를 받아서 연결하고 테스트 할때 설정파일이 아닌 JAVA 소스 내에서
처리해야 하는 경우가 생겨 구현을 하게되었습니다.
hikari 를 이용하여 DB Pool 생성하여 활용하였습니다. DB는 PostgreSQL 연결 입니다.
1. 의존성 추가
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
maven 추가
dependencies {
implementation("com.zaxxer:HikariCP")
}
build.gradle 추가
2.DB Pool 클래스 생성
import javax.sql.DataSource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
public class DBPool {
public static DataSource datasource =null;
@Bean
public DataSource setupDriverPool() throws Exception {
String postgreUrl = "jdbc:postgresql://"+ "DB서버IP" +":"+ "DB서버 port" +"/"+ "DB서버 데이터베이스name";
HikariConfig config = new HikariConfig();
DataSource ds = datasource;
boolean isPool = false;
if(datasource != null) isPool=true;
if(!isPool){
config.setJdbcUrl(postgreUrl);
config.setUsername((String)serverInfoObj.get("DB접속아이디" ));
config.setPassword((String)serverInfoObj.get("DB접속 패스워드"));
config.setMaximumPoolSize(10);
config.setMinimumIdle(5);
config.setPoolName(poolName);
ds = new HikariDataSource(config);
datasource = ds;
}
return ds;
}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return sessionFactoryBean.getObject();
}
3.DB Pool 을 활용한 DB 연결 예제
public class DBpoolExample {
public static void main(String[] args) throws Exception {
// DB 커넥션
DBPool dbpool = new DBPool();
datasource = dbpool.setupDriverPool();
System.out.println("datasource:" + datasource);
sqlSessionFactory = dbpool.sqlSessionFactory(datasource);
sessDB = sqlSessionFactory.openSession();
List<Object> selectDBList = new ArrayList<Object>();
selectDBList = sessDB.selectList("app.selectDatabaseList");
}
}