티스토리 뷰

프로젝트/게시판 프로젝트

[기능구현#8] DataSource

거북이의 기술블로그 2024. 11. 20. 22:24

DataSource 란?

DataSource는 JDBC를 이용하여 DB를 연결시에 도와주는 객체이다.
DataSource는 DB연동을 위한 작업을 중간에서 도와주며, Connection Pool를 이용하여 커넥션 관리를 용이하게 도와준다.
DataSourceUtils를 이용하면, 커넥션의 반환도 관리할 수 있어서 트랜잭션을 시행할때 많은 도움을 받을 수 있다/

현재 프로젝트에 적용되어있으며, h2DataBase의 드라이버를 사용하지 않고도 DataSource를 이용하여 손쉽게 연결하며 ConnectionPool도 구성할 수 있었다.

 

DataSource 구현

  • DataSource Config
    • DataSource는 인터페이스이고, Hikari를 이용하여 구현체를 사용
public class DataSourceConfig {

    public static DataSource dataSource(){
        HikariConfig config = new HikariConfig();

        config.setJdbcUrl(ConnectionConst.URL);
        config.setUsername(ConnectionConst.USERNAME);
        config.setPassword(ConnectionConst.PASSWORD);

        config.setMaximumPoolSize(10);
        config.setMinimumIdle(5);
        config.setIdleTimeout(600000);
        config.setConnectionTimeout(30000);
        config.setMaxLifetime(1800000);
        config.setConnectionTestQuery("select 1");

        return new HikariDataSource(config);
    }
}
  • AppConfig (@Configuration)
    • 수동으로 bean을 등록하여,  생성자 주입을 해주었다
//@Configuration
@Bean
    public BoardRepository boardRepository() {
         return new BoardDBRepository(DataSourceConfig.dataSource());
    }
    
 
 //BoardDBRepository.class
 public BoardDBRepository(DataSource dataSource){
        this.dataSource = dataSource;
        this.excep = new SQLErrorCodeSQLExceptionTranslator(dataSource);
    }

 

  • DataSourceUtils를 사용
    • 트랜잭션을 위한 커넥션 유지
private void close(Connection con, Statement stmt, ResultSet rs){
        JdbcUtils.closeResultSet(rs);
        JdbcUtils.closeStatement(stmt);
        DataSourceUtils.releaseConnection(con, dataSource);
    }

 

DataSource 장점

  • DataSource를 통해서 Driver 없이 DB와 connect 작업을 수월하게 할 수 있었다
  • DataSource를 통해서 커넥션 유지하여, 트랜잭션이 원활하게 돌아가도록 제공
  • DataSource를 통해서 커넥션 풀을 유지하며, connection을 매번 맺는 리소스를 절약할 수 있었다.

 

 

아쉬운점

  • DataSource를 이용하여 성능이 얼마나 향상되는지 측정이 되질 않았다. (테스트 코드 작성을 통한 CRUD 확인)
  • DataSource를 이용한 인터페이스 활용 대한 장점은 알겠지만, 이를 몇개를 활용해야하는지에 대한 궁금증이 해결되지 못했다

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함