취뽀몽

[CS] JDBC vs ODBC 본문

CS

[CS] JDBC vs ODBC

허몽구 2024. 12. 2. 23:06

JDBC와 ODBC는 각각 Java와 Windows 환경에서 데이터베이스 연결을 위해 사용되는 API 이다.

두 기술은 유사한 목적을 가지고 있지만 동작 방식, 플랫폼 의존성, 성능 등의 측면에서 차이가 있다.

오늘은 두 기술의 차이점에 대해 알아보도록 하자.

 

1. 정의

- JDBC (Java Database Connectivity)

Java 애플리케이션에서 데이터베이스와 연결하기 위한 표준 API로, Java 언어와 함께 사용되며 데이터베이스 독립성을 제공한다.

또한 Java 플랫폼의 일부로, 플랫폼에 독립적인 데이터베이스 연결을 지원한다.

 

- ODBC (Open Database Connectivity)

Microsoft에서 개발한 표준 API로, 주로 Windows 기반 애플리케이션에서 사용된다.

데이터베이스 연결을 위해 운영 체제의 ODBC 드라이버를 활용하며, 플랫폼에 의존적이다.

주로 C, C++ 같은 언어로 개발된 애플리케이션에서 사용된다.

 

2. 플랫폼 의존성

- JDBC (Java Database Connectivity)

Java 기반으로 작성되었기 때문에 JVM만 설치되어 있으면 어디서 작동하는 독립적 성격을 가진다.

 

- ODBC (Open Database Connectivity)

Windows 운영 체제에 의존적이며, 다른 플랫폼에서는 호환성 문제가 있을 수 있다.

다양한 언어를 지원하지만, 특정 플랫폼에서만 안정적으로 동작하는 경우가 많다.

 

3. 드라이버 모델

- JDBC (Java Database Connectivity)

JDBC는 네 가지 드라이버 유형을 제공한다.

  1. JDBC-ODBC 브리지 드라이버 : JDBC 호출을 ODBC 호출로 변환 (현재는 거의 사용되지 않음)
  2. 네이티브 API 드라이버 : 데이터베이스의 네이티브 API 호출을 사용
  3. 네트워크 프로토콜 드라이버 : 미들웨어 서버를 통해 데이터베이스에 연결
  4. 순수 Java 드라이버 : 100% Java로 작성된 드라이버 (가장 권장됨)

- ODBC (Open Database Connectivity)

ODBC 드라이버는 데이터베이스와 연결하기 위해 데이터 소스 이름을 사용한다.

시스템, 사용자 또는 파일 기반의 DSN 설정이 필요하다.

 

4. 성능

- JDBC (Java Database Connectivity)

순수 Java 드라이버를 사용할 경우 성능이 뛰어나며, 네이티브 API와 미들웨어 없이 데이터베이스와 직접 통신한다.

 

- ODBC (Open Database Connectivity)

네이티브 코드로 작성되었기 때문에 Windows 환경에서는 빠르고 효율적이다.

그러나 DSN 설정 및 드라이버 관리로 인해 추가적인 오버헤드가 발생할 수 있다.

 

5. 설정 및 사용

- JDBC (Java Database Connectivity)

데이터베이스 연결을 위해 JDBC URL, 사용자 이름, 비밀번호만 필요하다.

설정이 간단하며 Java 프로그램 내에서 직접 연결 설정이 가능하다.

 

- ODBC (Open Database Connectivity)

ODBC 드라이버 매니저에서 데이터 소스를 설정해야 하며, 애플리케이션이 이 DSN을 사용한다.

설정 과정이 복잡할 수 있으며, 운영 체제에 따라 차이가 있다.

 

6. 호환성

- JDBC (Java Database Connectivity)

대부분의 데이터베이스와 호환되며, 데이터베이스별로 적합한 JDBC 드라이버를 사용해야 한다.

 

- ODBC (Open Database Connectivity)

ODBC 드라이버가 제공되는 모든 데이터베이스와 호환되지만, ODBC 드라이버가 특정 플랫폼에 종속될 수 있다.

 

7. 정리

특징 JDBC ODBC
플랫폼 플랫폼 독립적 Windows에 의존적
성능 순수 Java 드라이버로 빠름 Windows에서는 높은 성능
설정 간단 DSN 설정 필요
사용 언어 Java C, C++, .NET 등 다양한 언어 사용
보안 Java 보안 기능 활용 가능 Windows 보안 모델 의존

 


 

나는 Java 기반 프로젝트를 진행하여 JDBC를 사용하는 것이 권장되고, 이게 편하지만...

Java가 아닌 다른 언어를 사용할 경우 ODBC가 적합할 수 있다.

요즘은 대부분 JDBC가 선호된다고 하지만, ODBC는 최근에 처음 들어봤어서 정리할 겸 작성해봤다.

ODBC를 써볼 일은 없을 것 같지만.. JDBC에 대해서도 많이 알아가는 것 같아 뿌듯했다!