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");

       
    }
}