티스토리 뷰
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를 이용한 인터페이스 활용 대한 장점은 알겠지만, 이를 몇개를 활용해야하는지에 대한 궁금증이 해결되지 못했다
'프로젝트 > 게시판 프로젝트' 카테고리의 다른 글
[리펙토링] 개발 요구사항 (게시판 프로젝트) (0) | 2025.01.03 |
---|---|
[리펙토링] 게시판 프로젝트 아키텍처 (1) | 2024.11.20 |
[기능구현#7] 파일 업로드 (0) | 2024.11.20 |
[기능구현#5] AppConfig 구성 (0) | 2024.11.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 타입변환
- 이진탐색
- 정렬
- 코딩테스트
- db
- 게시판
- 게시판 프로젝트
- Spring
- 클래스
- 예외처리
- JSON
- SQL
- HTML5
- 우선순위 큐
- 기술면접
- Thymeleaf
- DFS
- BFS
- 검증
- 포트폴리오
- 티스토리챌린지
- 깊이우선탐색
- JDBC
- 백준
- 버블정렬
- Java
- bean
- 오블완
- 알고리즘
- stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함