내 잡다한 노트

JDBC와 ODBC 본문

DB

JDBC와 ODBC

peanutwalnut 2025. 1. 23. 12:25

JDBC ( Java DataBase Connectivity ) 와 ODBC ( Open DataBase Connectivity ) 를 길게 풀면 이렇다.

모두 애플리케이션과 데이터베이스를 연결하는 인터페이스의 일종이다.

 

1. ODBC (Open Database Connectivity)

  1. 역사 및 표준화
    • 마이크로소프트가 1990년대 초에 정의한 API로, C 언어를 기반으로 하는 DB 연결 표준이었습니다.
    • ODBC는 데이터베이스 벤더나 언어에 관계없이 동일한 API 호출 방식을 사용하도록 정의되어 있어, 데이터베이스 호환성을 높이는 것이 목적입니다.
  2. 동작 원리
    • 애플리케이션에서 ODBC 함수를 호출하면, ODBC 드라이버 관리자를 통해 적절한 ODBC 드라이버(각 DB 벤더가 제공)를 불러 실행합니다.
    • ODBC 드라이버가 실제 DB 프로토콜(예: TDS, MySQL protocol 등)에 맞추어 서버와 통신합니다.
  3. 주 사용 환경
    • 전통적으로 Windows 환경에서 많이 사용되었습니다. (ODBC는 운영체제와 밀접한 부분도 있었기 때문)
    • 하지만 리눅스/유닉스 환경에서도 unixODBC, iODBC 같은 드라이버 관리자를 통해 동작할 수 있습니다.
    • C/C++, Delphi, Visual Basic, .NET 등 다양한 언어에서 ODBC를 사용해 DB 연결이 가능합니다.
  4. 장단점
    • 장점: DB 종류가 달라져도 같은 ODBC API로 접근 가능하므로, 특정 DB에 종속되지 않는 범용성
    • 단점: 상대적으로 세밀한 기능(트랜잭션 처리, DB 고유 기능 등)은 일반화된 API가 제대로 지원하지 못할 수 있음
    • 운영체제 의존성: ODBC 드라이버 관리자가 OS 종속적인 경우가 많으므로, 환경 설정이 복잡할 수 있음

2. JDBC (Java Database Connectivity)

  1. 역사 및 배경
    • 썬 마이크로시스템즈(현 오라클)가 Java 언어로 개발한 응용 프로그램이 데이터베이스에 접근하기 위한 API로 정의
    • ODBC와 유사한 목적을 지니지만, Java 환경에 최적화되어 있고, 자바 플랫폼 표준의 일부로 포함됩니다.
  2. 동작 원리
    • Java 애플리케이션이 JDBC 표준 인터페이스를 통해 DB에 접근 요청을 하면,
    • JDBC 드라이버(각 벤더가 제공하거나 3rd-party에서 개발)가 해당 DB의 프로토콜을 이해하고 통신을 담당합니다.
    • “DriverManager” 혹은 “DataSource” 개념을 통해 여러 JDBC 드라이버를 관리할 수 있습니다.
  3. 주 사용 환경
    • Java 기반 애플리케이션(서블릿, 스프링 부트, JPA, Hibernate, 스파크(Scala)에서 자바 호환성 등)에서 DB에 접근할 때 가장 일반적으로 사용됩니다.
    • Oracle, MySQL, PostgreSQL, MS SQL Server 등 거의 모든 상용·오픈소스 DB가 JDBC 드라이버를 제공합니다.
  4. 장단점
    • 장점: 자바 환경에서 표준화된 API로 DB에 접근 가능. 대부분의 DB가 JDBC 드라이버 제공.
    • 단점: Java 이외 언어에서 직접 사용하기 어렵고, 자바 환경에 종속적.
    • DB 고유 기능: JDBC 표준에 없는 DB 고유 기능은 벤더가 제공하는 확장 API나 프로시저로 사용해야 할 수 있음.

3. JDBC vs. ODBC 비교 요약

구분                      ODBC                                                                               JDBC

출시 1990년대 초, Microsoft 등 1990년대 중반, Sun(Oracle)
표준화 C/C++ 기반 API 표준 (Language-independent) Java 환경에 특화된 API 표준
사용 언어 주로 C/C++, VB, Delphi, .NET 등 Java, Scala 등 JVM 기반 언어
운영체제 주로 Windows에서 발전했지만, Unix/Linux도 가능 운영체제에 크게 무관 (JVM이 동작하는 곳)
장점 - 범용 DB 접근 표준
- C/C++ 등 저수준 API
- Java 표준 DB API
- 풍부한 Java 생태계 연동성
단점 - 환경 설정이 비교적 복잡
- OS 종속성 가능
- Java 환경 종속
- 다른 언어에서 사용 어려움
드라이버 ODBC Driver (벤더별 제공) JDBC Driver (벤더별 제공)
  • ODBC: 언어·플랫폼 의존도가 비교적 낮지만, 실제로는 OS(Windows) 종속적인 측면이 강했던 역사적 배경이 있습니다. 다양한 언어(C/C++/.NET 등)에서 범용적으로 사용 가능.
  • JDBC: Java 생태계에서 표준 DB 접근 방식이며, 자바를 사용하는 대부분의 서버사이드 애플리케이션에서 핵심 요소입니다.

 

데이터베이스 자체가 Java로 구현되어 있지 않아도 전혀 상관없습니다. 많은 DB(Oracle, MySQL, PostgreSQL 등)는 C/C++ 등 다양한 언어로 작성되었지만, JDBC 드라이버만 제대로 제공된다면 Java 애플리케이션과의 연동이 가능합니다.

  • JDBC는 “Java 애플리케이션 ↔ (DB에 대응하는) JDBC 드라이버” 간의 연결 규약입니다.
  • 드라이버가 내부적으로 DB 고유 프로토콜(예: PostgreSQL 프로토콜, MySQL 프로토콜 등)에 맞춰 통신을 처리해주기 때문에, DB가 어떤 언어로 작성되었는지는 중요하지 않습니다.
  • 따라서 DB가 Java 기반인지 아닌지와 무관하게, “해당 DB를 위한 JDBC 드라이버”만 있으면 Java 애플리케이션에서 JDBC로 접근할 수 있습니다.

 

 

'DB' 카테고리의 다른 글

DB와 관련된 기본 용어  (0) 2025.01.27
DB에서 Lock 이란?  (0) 2025.01.21
트랜잭션 (Transaction)  (0) 2025.01.21
Shard 란?  (0) 2025.01.21
Grouping 이란?  (0) 2025.01.21