Connection Pool : WAS에서 DB에 연결하기 위해서 DriverManager를 사용해 connection을 진행했는데, 이런 연결은 요청이 있을 때마다 connection을 생성해 비용, 시간이 많이 든다. 이를 해결하기 위해 Connection Pool을 사용한다.
WAS에 커넥션 풀을 생성하고, DB와 이미 연결된 몇 개의 커넥션을 저장하고 있고, 필요할 때마다 꺼내 사용하고 사용이 끝나면 연결을 끊는 것이 아니라 다시 커넥션 풀로 반환하는 것이다.
전에 사용했던 DriverManager에서 Connection Pool로 변경하기 위해서 커넥션을 진행하는 모든 코드를 바꿔야 한다, 이를 방지하기 위해 커넥션을 획득하는 방법을 DataSource로 추상화해 사용한다!
DataSource
DriverManager, HikariCP 커넥션 풀, DBCP2 커넥션 풀 등 다양한 커넥션 획득 방법을 추상화한 인터페이스
따라서 WAS에선 DataSource를 참조해 커넥션을 획득하면 된다.
만약 DriverManager를 통해 커넥션을 획득하려면 DataSource 인터페이스를 구현한 DriverManagerDataSource를 사용하면 된다.
HikariCP 커넥션 풀을 사용하라면 HikariDataSource를 사용하면 된다.
아래와 같이 DataSource를 참조하고
public class MemberRepositoryV1 {
private final DataSource dataSource;
public MemberRepositoryV1(DataSource dataSource) {
this.dataSource = dataSource;
}
// save, find, ...
Connection con = dataSource.getConnection(); // 커넥션 획득 방법
Configuration을 통해서 (혹은 AutoWired를 통할 경우, applicationconfig에 URL, USERNAME, PASSWORD를 설정한다) DataSource를 주입한다.
HikariDataSource dataSource = new HakariDataSource();
dataSource.setJdbcUrl(URL);
dataSource.setUsername(USERNAME);
dataSource.setPassword(PASSWORD);
repository = new MemberRepositoryV1(dataSource);
'코딩 > JAVA 공부' 카테고리의 다른 글
| [Spring] DB의 이해, 예외 추상화와 JDBC Template (1) | 2023.06.26 |
|---|---|
| [Spring] DB의 이해, Transaction!! (0) | 2023.06.25 |
| [Spring] DB의 이해, JDBC란? (0) | 2023.06.23 |
| [Spring] JSP 와 Servlet, JSP 를 활용한 MVC 구조 (0) | 2023.06.04 |
| [Spring] 웹애플리케이션 이해 - Servlet (0) | 2023.06.03 |