soowanlog

JDBC 본문

백엔드/Java

JDBC

개발자솬
백엔드/Java

JDBC

개발자솬 2024. 3. 6. 13:42
728x90
반응형
  • JDBC란?

JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 Java api입니다.

 

JDBC는 다음 3가지 기능을 표준 인터페이스로 정의하여 제공합니다.

- java.sql.Connection : 연결

- java.sql.Statement : SQL을 담은 내용

- java.sql.ResultSet : SQL 요청 응답

 

  • JDBC 동작 흐름
Java 애플리케이션 → JDBC API → JDBC 드라이버 → 데이터베이스

 

JDBC는 Java 애플리케이션 내에서 JDBC API를 사용하여 데이터베이스에 접근하는 단순한 구조입니다.

JDBC API를 사용하기 위해서는 JDBC 드라이버를 먼저 로딩한 후 데이터베이스와 연결하게 됩니다.

※ JDBC 드라이버


- 데이터베이스와 통신을 담당하는 인터페이스
- MySQL, Oracle 등과 같은 데이터베이스에 알맞은 JDBC 드라이버를 구현하여 제공
- JDBC 드라이버의 구현체를 이용해서 특정 벤더의 데이터베이스에 접근할 수 있음

※ IT업체에서의 벤더


일반적으로 판매인 또는 판매업자를 가리키는 말
특히 컴퓨터 시스템의 HW나 SW 제품을 사용자에게 판매하였을 때 그 제품의 브랜드에 대해 책임을 지는 기업
벤더는 제조업체일 수도 있고 판매 회사일 수도 있음

 

  • JDBC API 사용 흐름

- JDBC 드라이버 로딩 :

JDBC 드라이버는 DriverManager 클래스를 통해 로딩됩니다.

 

- Connection 객체 생성 :

JDBC 드라이버가 정상적으로 로딩되면 DriverManager 클래스를 통해 데이터베이스와 연결되는 세션인 Connection 객체를 생성합니다.

 

- Statement 객체 생성 :

Statement 객체는 작성된 SQL 쿼리문을 실행하기 위한 객체로 정적 SQL 문자열을 입력으로 가집니다.

 

- Query 실행 :

생성된 Statement 객체를 이요하여 입력한 SQL 쿼리문을 실행합니다.

 

- ResultSet 객체로부터 데이터 조회 :

실행된 SQL 쿼리문에 대한 결과 데이터 셋입니다.

 

- ResultSet, Statement, Connection 객체들의 close :

JDBC API를 통해 사용된 객체들은 생성된 객체들을 사용한 순서의 역순으로 close 합니다.

 

  • Connection Pool

JDBC API를 사용하여 데이터베이스와 연결하기 위해 Connection 객체를 생성하는 작업은 비용이 많이 드는 작업 중 하나입니다.

※ Connection 객체를 생성하는 과정


- 애플리케이션에서 DB 드라이버를 통해 Connection을 조회
- DB 드라이버는 DB와 TCP/IP Connection을 연결
- DB 드라이버는 TCP/IP Connection이 연결되면 아이디와 패스워드, 기타 부가 정보를 DB에 전달
- DB는 아이디, 패스워드를 통해 내부 인증을 거친 후 내부에 DB를 생성
- DB는 Connection 생성이 완료되었다는 응답을 보냄- DB 드라이버는 Connection 객체를 생성해서 클라이언트에 반환

이처럼 커넥션을 새로 만드는 것은 비용이 많이 들며 비효율적입니다.

 

이러한 문제를 해결하기 위해 애플리케이션 로딩 시점에 Connection 객체를 미리 생성하고, 애플리케이션에서 데이터베이스에 연결이 필요할 경우 미리 준비된 Connection 객체를 사용하여 애플리케이션의 성능을 향상하는 Connection Pool이 등장하게 됩니다.

 

즉, Connection 객체를 미리 생성하여 보관하고 애플리케이션이 필요할 때 꺼내서 사용할 수 있도록 관리해 주는 것이 Connection Pool입니다.

참    고    자    료

- JDBC란 무엇인가? Java Database Connectivity | 잇트로

 

- 벤더란 무엇인가? IT 벤더, 사전적 벤더, 유통 벤더 | pacificduck님의블로그

728x90
반응형

'백엔드 > Java' 카테고리의 다른 글

Java 버전 별 특징  (2) 2024.03.07
Java  (0) 2024.03.07
Persistence Framework  (0) 2024.03.06
OOP  (0) 2024.03.05
ORM  (0) 2024.03.05