1. Connection Pool이란?
JDBC를 통해 DB 관련 처리를 하려면 데이터베이스의 드라이버를 로드하고 Connection 객체를 받아와야 한다. 즉, 아래 코드와 같은 과정을 거친다.
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(dbUrl, dbUser, dbPasswd);
즉, 우리는 매번 사용자가 요청을 하면 드라이버를 로드하고 Connection 객체를 생성하고 닫는 비효율적인 과정을 거쳐야 한다. 이때 우리는 Connection Pool이라는 방법을 사용할 수 있다.
Connection Pool은 DB와 연결된 Connection 객체를 미리 생성하여 관리하는 방식으로 다음과 같은 과정을 거친다.
- Was가 실행되면서 Connection 객체를 pool에 생성한다.
- Http 요청이 들어오면 생성된 Connection 객체를 연결한다.
- 작업이 끝나면 Connection 객체를 반환한다.
이때 Was는 제한된 개수의 Connection만 생성한다. 따라서 제한된 개수보다 많은 사용자가 연결을 요구하면 연결되지 못한 사용자는 대기 상태에 빠진다. 따라서 원하는 작업이 끝나면 잘 반환하는 것이 매우 중요하다. Apache의 경우 Common DBCP, Tomcat-JDBC 등이 있으며 주로 Commons DBCP를 주로 사용한다고 한다. 만약 Maven에서 해당 라이브러리를 사용하고 싶다면 아래 url을 참고하여 원하는 버전의 dependency 코드를 dependencies 태그 사이에 추가하면 된다.
2. DataSource란?
DataSource란 위와 같은 Connection Pool을 관리하는 목적으로 사용되는 객체다. 우리는 DataSource로 Connection을 연결하고 반납하는 등의 작업을 수행할 수 있다.
'BackEnd > Spring' 카테고리의 다른 글
[Spring JDBC] Jdbc Template이란? (queryForObject, query) (0) | 2023.01.28 |
---|---|
[Spring JDBC] DataSource를 통해 데이터베이스 연결하기 (0) | 2023.01.27 |
[Spring] Java Config를 활용한 Bean 등록 방법 (0) | 2023.01.25 |
[Spring] xml 파일을 활용한 Bean 등록 방법 (0) | 2023.01.25 |
Maven에서 Spring 사용법 (pom.xml 설정) (0) | 2023.01.25 |