개발놀이터

커넥션 풀 (Connection pool) 본문

Spring/Spring

커넥션 풀 (Connection pool)

마늘냄새폴폴 2022. 6. 21. 01:48

*커넥션 풀

커넥션을 하는데 많은 소스가 들어간다. 
1. 애플리케이션 로직이 디비 드라이버에 커넥션을 조회한다.
2. TCP/IP 커넥션 연결
3. ID, PW 부가정보 전달
4. DB내부 인증 + DB 세션 생성
5. 커넥션 생성 완료
6. 애플리케이션 로직에 커넥션 반환

근데 데이터베이스에 접근할 때마다 커넥션 객체를 만들면 메모리 누수, 시간 낭비 심함

그래서 대안이 커넥션 객체를 여러개 만들어 둔다. 
-애플리케이션 로직이 디비에 커넥션 객체를 요청할 때 디비 드라이버가 커넥션을 만드는것이 아니라 이미 만들어진 커넥션 풀에서 꺼내 쓰게 된다. 

근데 커넥션 객체를 여러개 만들기 위해서 커넥션 풀이란걸 만들게 되는데 각각의 커넥션 풀을 구현해놓은 것들 마다 사용법이 조금씩 다른 현상이 생겼다. 그래서 커넥션 풀을 바꿀 때마다 애플리케이션 로직이 변경되는 현상 발생

그래서 이들을 모두 추상화 한것이 바로 데이터소스(DataSource)라는 인터페이스이다. 

데이터소스는 커넥션을 획득하는 방법을 추상화 하는 인터페이스이다.