4. 커넥션 연결 전략
1. JDBC로 Connection을 수행하는 방법
JDBC로 커넥션을 수행하는 방법은 크게 2가지로 구분할 수 있음
A.사용자 요청마다 커넥션 객체를 생성하는 방법
B.프로그램을 시작할 때 커넥션 객체를 2개 이상 미리 생성해두고 재사용하는 방법
방법 A. 매 사용자 요청이 발생할 때마다 커넥션 객체를 생성
매 요청마다 DriverManager를 통해 커넥션 객체 생성
JDBC.java
Connection connection = DriverManager.getConnection(DB_URL + DB_NAME, USER, PASSWORD);방법 A의 단점 - 커넥션을 생성하기까지 소요되는 시간/비용
커넥션을 생성하는 과정은 자바 애플리케이션과 데이터베이스 서버 간 네트워크 통신 과정을 거치기 때문에 일정 시간과 리소스가 소요됨
→ 네트워크 IO
1. DBMS에 맞는 드라이버 객체(클래스) 순회 및 로딩
자바 애플리케이션은 DriverManager로 등록된 JDBC 드라이버 구현체 목록을 순회하며 JDBC URL과 매칭되는 드라이버를 찾음
→ 내부적으로는 리플렉션을 통해 런타임에 찾기 때문에 일정 시간이 소요됨
2. 네트워크 소켓 생성
자바 애플리케이션은 데이터베이스 서버와 통신하기 위해 TCP 소켓을 생성함
OS 레벨에서는 TCP 포트를 바인딩하고, 세션을 설정하는 등의 동작이 수행됨
3. TCP 3-way Handshake
자바 애플리케이션과 데이터베이스 서버 간에 TCP 연결을 수립하기 위해 3단계 패킷 교환이 수행됨
- SYN → 자바 애플리케이션이 데이터베이스 서버에 연결 의사 전송
- SYN-ACK → 서버가 연결 수락 응답
- ACK → 최종 확인 응답
4. (선택) SSL/TLS Handshake
만약 데이터베이스 서버 연결이 SSL/TLS로 암호화되어 연결될 경우, 인증서를 교환하는 등의 과정에서 추가 네트워크 IO가 발생
5. 데이터베이스 인증
자바 애플리케이션으로부터 데이터베이스 접근 요청을 받은 데이터베이스 서버는 자바 애플리케이션(클라이언트)이 인증된 사용자인지 확인하기 위해 데이터베이스 계정(ID,PW)를 확인하고 세션을 초기화·생성하는 과정을 거침
이러한 과정들이 매 요청마다 반복되는 것은 다소 비효율적이라고 볼 수 있음
Last updated on