Search
Duplicate

[Spring DB] 커넥션풀과 데이터소스 이해

상태
Done
숫자
1
날짜
2023/08/12
담당자

커넥션 이해

과거에는 데이터 베이스 커넥션을 획득 할때 복잡한 과정을 거쳤다.
1.
애플리케이션 → DB 드라이브 커넥션 조회
2.
DB 드라이버 → TCP/IP 커넥션 연결. (3 way handshake)
3.
DB 드라이버 → DB로 정보 전달(ID, PW와 기타 정보)
4.
인증완료 → 내부에 DB 세션을 생성
5.
DB에서 커넥션이 생셩되었다고 → DB 드라이버에 응답
6.
DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환.
[문제]
1.
과정이 너무 복잡함
2.
TCP/IP 커넥션을 새로 생성하기 위한 리소스를 매번 사용해야 함
3.
에플리 케이션을 사용할 때 SQL 실행 + 커넥션을 새로 만드는 시간 = 응답속도 지연이 발생된다.
[해결방법]
커넥션 풀을 미리 만들어서 사용한다.
커넥션 풀은 미리 DB와 연결해놓고 필요할 때마다, 풀에 있는 커넥션을 사용하기 때문에 신규로 생성할 필요가 없다.
이제 애플리케이션 로직은 커넥션 풀에서 받은 커넥션을 사용해 SQL을 전달하고, 그 결과를 받아서 처리함.
중요한 것은 완료되면 커넥션을 종료하는 것이 아닌, 연결한 상태를 반환 한다는 것이다.

그렇다면 DataSource는 어떻게 만들어져 있는가?

DataSource 는 추상화 인터페이스로, 핵심 기능은 커넥션 조회 하나이다.
이제 필요한 커넥션 풀을 사용할 때마다 추상화 인터페스를 DI를 통해서 변경해주면된다.
참조: 이 자료는 김형한님의 스프링 DB 1편을 토대로 만들었습니다.