db가 커넥션을 할때의 과정
1. 애플리케이션 로직이 db드라이버를 통해 커넥션을 조회한다.
2. db드라이버는 db와 tcp/ip 커넥션 연결을 한다.
3. db 드라이버는 id,pw와 기타 부가 정보를 db에 전달한다.
4. db는 id,pw를 통해 내부인증을 완료해고 내부에 db 세션을 생성한다.
5. db는 커넥션이 생성이 완료되었다는 응답을 보낸다.
6. db드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다.
위와같은 과정을거치기때문에 생각보다 복잡한 과정과 많은 시간이 소모 되는 일이다.
데이터베이스마다 커넥션 시간은 다 다르다.
위 와같은 문제를 해결하기 위해 생긴 방법이 커넥션 풀이다.
커넥션풀은 커넥션을 미리 생성해두고 사용하는 방법이다.
보통 기본 커넥션 값은 보통 10개이다. 미리 10개를 만들어놓고 tcp/ip로 연결돼 있는 상태로 즉시 sql을 바로 db에 전달할 수 있도록 한다.
이제 애플리케이션은 이미 생성된 커넥션을 객체 참조로 그냥 가져다 쓴다.
그리고 반환을 할때 커넥션을 종료하는것이 아니라 커넥션이 살아있는 상태로 커넥션 풀에 반환해야한다.