[Java] Connection Pool

chael_lo·2021년 6월 26일
0

Java

목록 보기
47/52

Connection Pool이란 커넥션 객체 생성과 삭제에 드는 오버헤드를 방지하기 위한 객체 재활용 방식이며 Connection 인스턴스를 미리 여러 개 생성하여 저장하고 Connection을 반환하는 기능을 제공한다.

Connection Pool의 필요성

DB와 연결하기 위해 매번 커넥션 객체를 생성한다.
예를 들어 유저 한명이 접속 한번에 하나의 커넥션을 만들고,
게시판의 경우 목록, 글읽기, 글쓰기 등 각각 한번씩 커넥션을 만든다고 할 경우 문제가 발생할 수 있다.
DB는 한 번에 처리할 수 있는 수가 정해져 있기 때문이다.
그러므로 DB에 데이터를 가져오기 위해 쿼리문을 보낼 때마다 Connection 객체를 생성한다는 것은 비효율적이다.

Connection Pool의 장점

Connection Pool을 통해 connection이 만드는 오버헤드를 효율적으로 관리 할 수 있다.

Connection Pool의 사용 흐름

하나의 Pool을 만들어서 미리 생성한 여러 Connection 객체들을 담아두고 클라이언트 요청이 들어올 때마다 하나씩 빌려주고 다시 돌려받는 형식이다.
미리 생성된 Connection은 ArrayList 형태로 담아두었다가 요청이 들어오면 빌려주고 반환하기 전까지 빌린 Connection을 사용하게 된다.
즉, connection 객체를 미리 만들어 놓고 가져다 쓰고 반환한다.

DataSource의 Connection Pool 지원

DataSource에서 DriverManager와 Connection Pool을 지원하기 때문에 DataSource를 이용하면 Connection Pool을 따로 만들 필요가 없다.

import java.sql.Connection;

Connection con = getConnection();
profile
천천히 꾸준히

0개의 댓글