JDBC 드라이버

JDBC driver

JDBC 드라이버는 Java 응용 프로그램[1]데이터베이스와 상호 작용할 수 있도록 하는 소프트웨어 구성 요소입니다.JDBC 드라이버는 ODBC 드라이버, ADO와 유사합니다.NET 데이터 공급자 및 OLE DB 공급자.

개별 데이터베이스와 연결하려면 JDBC(Java Database Connectivity API)에서 각 데이터베이스용 드라이버가 필요합니다.JDBC 드라이버는 데이터베이스에 대한 연결을 제공하고 클라이언트와 데이터베이스 에 쿼리 및 결과를 전송하기 위한 프로토콜을 구현합니다.

JDBC 테크놀로지 드라이버는 4가지 카테고리 [2]중 하나에 해당합니다.

  1. JDBC-ODBC 브리지
  2. 네이티브 API 드라이버
  3. Network-Protocol 드라이버(미들웨어 드라이버)
  4. Database-Protocol 드라이버(순수 Java 드라이버) 또는 씬 드라이버.

타입 1 드라이버– JDBC-ODBC 브리지

JDBC-ODBC 교량의 개요

JDBC 타입1 드라이버(JDBC-ODBC 브리지라고도 함)는 ODBC 드라이버를 사용하여 데이터베이스에 접속하는 데이터베이스 드라이버 구현입니다.드라이버는 JDBC 메서드 호출을 ODBC 함수 호출로 변환합니다.

드라이버는 ODBC를 사용하기 때문에 플랫폼에 의존하며, ODBC는 JVM이 실행 중인 기본 운영 체제의 네이티브 라이브러리에 의존합니다.또, 이 드라이버를 사용하면, 다른 인스톨에 의존하게 됩니다.예를 들어, ODBC 는 드라이버가 있는 컴퓨터에 인스톨 되어 데이타베이스가 ODBC 드라이버를 서포트하고 있을 필요가 있습니다.순수 Java 드라이버를 사용할 수 있는 경우 이 드라이버는 사용하지 않는 것이 좋습니다.또, 타입 1 드라이버를 사용하고 있는 애플리케이션은, 드라이버와 플랫폼간의 바인딩에 의해서 포터블이 되지 않습니다.이 기술은 거래량이 많은 환경에서는 적합하지 않습니다.타입 1 드라이버는 Java 명령어세트 전체를 지원하지 않으며 ODBC 드라이버의 기능에 의해 제한됩니다.

Sun(현 Oracle)은 JDBC-ODBC Bridge 드라이버를 제공했습니다.sun.jdbc.odbc.JdbcOdbcDriver이 드라이버는 Java가 아닌 네이티브 코드이며 비공개 소스입니다.Sun/Oracle의 JDBC-ODBC 브릿지는 Java 8에서 삭제되었습니다(다른 벤더의 브릿지는 [3][4][5][6]이용 가능합니다).

드라이버를 로드하면 인스턴스가 생성되고 호출도 할 수 있도록 드라이버가 작성되어 있는 경우DriverManager.registerDriver이 인스턴스를 매개 변수로 지정하면 드라이버 매니저의 드라이버 목록에 포함되며 연결을 만드는 데 사용할 수 있습니다.

복수의 JDBC 드라이버가 특정의 URL 에 접속할 수 있는 경우가 있습니다.예를 들어, 특정의 리모트 데이터베이스에 접속하는 경우는, JDBC-ODBC 브리지 드라이버, JDBC-to-generic-network-protocol 드라이버, 또는 데이타베이스 벤더가 제공하는 드라이버를 사용할 수 있습니다.이 경우 드라이버 매니저는 최초로 발견된 드라이버를 사용하여 지정된 URL에 정상적으로 연결되기 때문에 드라이버 테스트 순서는 중요합니다.

먼저 드라이버 매니저는 각 드라이버를 등록된 순서대로 사용하려고 합니다.(jdbc.drivers에 기재되어 있는 드라이버가 항상 최초로 등록됩니다).접속을 열려고 하는 코드와 같은 소스에서 로드되지 않는 한 신뢰할 수 없는 코드가 아닌 드라이버는 모두 건너뜁니다.

각 메서드에서 Driver.connect 메서드를 차례로 호출하여 사용자가 처음에 메서드에 전달한 URL을 전달합니다.DriverManager.getConnectionURL 을 최초로 인식한 드라이버가 접속합니다.

이점

  • ODBC 드라이버가 설치된 거의 모든 데이터베이스에 액세스할 수 있으며 데이터를 검색할 수 있습니다.

단점들

  • 콜이 JDBC(java database connectivity) 브릿지를 경유하여 ODBC(Open database connectivity) 드라이버에 이어 네이티브데이터베이스 접속 인터페이스(따라서 다른 타입의 드라이버보다 속도가 느릴 수 있습니다)로 이행해야 하기 때문에 퍼포먼스 오버헤드가 발생합니다.
  • 클라이언트 시스템에 ODBC 드라이버를 설치해야 합니다.
  • ODBC 드라이버를 클라이언트에 설치해야 하므로 애플릿에는 적합하지 않습니다.
  • 특정 ODBC 드라이버를 모든 플랫폼에서 사용할 수 있는 것은 아니기 때문에 이 드라이버의 휴대성은 제한됩니다.
  • JDK 1.8(Java 8)에서는 지원되지 않습니다.

타입 2 드라이버– 네이티브 API 드라이버

네이티브 API 드라이버의 개요

네이티브 API 드라이버라고도 불리는 JDBC 타입2 드라이버는 데이터베이스의 클라이언트 측 라이브러리를 사용하는 데이터베이스 드라이버 구현입니다.드라이버는 JDBC 메서드 호출을 데이터베이스 API의 네이티브 호출로 변환합니다.예를 들어 다음과 같습니다.Oracle OCI 드라이버는 타입 2 드라이버입니다.

이점

  • JDBC-ODBC 브릿지는 실장되어 있지 않기 때문에 타입1 드라이버보다 훨씬 빠를 수 있습니다.

단점들

  • 벤더 클라이언트 라이브러리가 클라이언트 시스템에 설치되어 있어야 합니다.
  • 모든 데이터베이스에 클라이언트 측 라이브러리가 있는 것은 아닙니다.
  • 이 드라이버는 플랫폼에 의존합니다.
  • 이 드라이버는 애플릿을 제외한 모든 Java 응용 프로그램을 지원합니다.

타입 3 드라이버– Network-Protocol 드라이버 (미들웨어 드라이버)

Network Protocol 드라이버의 개요

JDBC 타입3 드라이버는 데이터베이스 [7]미들웨어용 Pure Java 드라이버라고도 불리며 호출 프로그램과 데이터베이스 사이의 중간 계층을 사용하는 데이터베이스 드라이버 구현입니다.중간 계층(어플리케이션서버)은 JDBC 콜을 직접 또는 간접적으로 벤더 고유의 데이터베이스 프로토콜로 변환합니다.

이는 프로토콜 변환 로직이 클라이언트가 아닌 중간 계층에 있다는 점에서 유형 4 드라이버와 다릅니다.타입 4 드라이버와 마찬가지로 타입 3 드라이버는 모두 Java로 작성됩니다.

복수의 데이타베이스에 대해서, 같은 클라이언트측의 JDBC 드라이버를 사용할 수 있습니다.미들웨어가 지원하도록 구성된 데이터베이스 수에 따라 달라집니다.타입 3 드라이버는 플랫폼과 관련된 차이가 미들웨어에 의해 처리되므로 플랫폼에 의존하지 않습니다.또, 미들웨어를 사용하면, 시큐러티와 파이어 월(fire wall) 액세스의 메리트를 얻을 수 있습니다.

기능들

  • 중간 계층 네트워크 서버에 JDBC API 콜을 전송하고, 이 콜을 DBMS 고유의 네트워크 프로토콜로 변환합니다.변환된 콜은 특정 DBMS로 전송됩니다.
  • 3계층 통신 방식을 따릅니다.
  • 여러 데이터베이스에 인터페이스 가능– 벤더 고유하지 않음
  • Java로 작성된 JDBC 클라이언트 드라이버는 데이터베이스 독립 프로토콜을 사용하여 미들웨어 넷서버와 통신하고 이 넷서버는 이 요구를 해당 데이터베이스의 데이터베이스 명령으로 변환합니다.
  • 따라서 클라이언트 드라이버에서 미들웨어로의 통신은 데이터베이스에 의존하지 않습니다.

이점

  • 클라이언트와 미들웨어 서버 간의 통신은 데이터베이스에 의존하지 않기 때문에 클라이언트에 데이터베이스 벤더 라이브러리가 필요 없습니다.새 데이터베이스에는 클라이언트를 변경할 필요가 없습니다.
  • 미들웨어 서버(완전한 J2EE 애플리케이션 서버일 수 있음), 캐싱(연결, 쿼리 결과 등), 로드 밸런싱, 로깅 및 감사와 같은 일반적인 미들웨어 서비스를 제공할 수 있습니다.
  • 미들웨어가 지원하는 한 하나의 드라이버로 모든 데이터베이스를 처리할 수 있습니다.
  • 예: IDA 서버

단점들

  • 중간 계층에서 데이터베이스 고유의 코딩이 필요합니다.
  • 미들웨어 레이어가 추가되면 지연 시간이 늘어날 수 있지만 일반적으로 더 나은 미들웨어 서비스를 사용하여 극복됩니다.

타입 4 드라이버– Database-Protocol 드라이버 / Thin Driver (Pure Java 드라이버)

네이티브 프로토콜 드라이버의 개요

Direct to Database Pure Java Driver라고도 불리는 JDBC 타입4 드라이버는 JDBC 콜을 벤더 고유의 데이터베이스 프로토콜로 직접 변환하는 데이터베이스 드라이버 구현입니다.

타입 4 드라이버는 완전히 Java로 쓰여져 있기 때문에 플랫폼에 의존하지 않습니다.클라이언트의 Java 가상 머신내에 인스톨 됩니다.이는 콜을 ODBC 또는 데이터베이스 API 콜로 변환하는 오버헤드가 없기 때문에 타입1 및 타입2 드라이버보다 뛰어난 퍼포먼스를 제공합니다.타입 3 드라이버와는 달리, 이 드라이버는 관련 소프트웨어가 필요 없습니다.

데이터베이스 프로토콜은 벤더에 따라 다르므로 JDBC 클라이언트는 다른 유형의 데이터베이스에 연결하기 위해 별도의 드라이버(일반적으로 벤더 제공)를 필요로 합니다.

이점

  • 플랫폼 독립성을 달성하기 위해 Java에서 완전히 구현됩니다.
  • 이러한 드라이버는 요청을 중간 형식(예: ODBC)으로 변환하지 않습니다.
  • 클라이언트 애플리케이션은 데이터베이스 서버에 직접 접속합니다.변환 레이어나 미들웨어 레이어를 사용하지 않기 때문에 퍼포먼스가 향상됩니다.
  • JVM은 애플리케이션과 데이터베이스 간 접속의 모든 측면을 관리할 수 있습니다.이것에 의해, 디버깅이 용이하게 됩니다.

단점들

  • 드라이버는 데이터베이스 벤더마다 매우 다른(일반적으로 독점적인) 네트워크 프로토콜을 사용하기 때문에 데이터베이스마다 다릅니다.

JDBC 드라이버 목록


「 」를 참조해 주세요.

레퍼런스

  1. ^ "Java SE 테크놀로지 - 데이터베이스"
  2. ^ Sun JDBC의 개요
  3. ^ Oracle. "JDBC-ODBC Bridge". Oracle Help Center. Retrieved 27 June 2015.
  4. ^ "Life after sun.jdbc.odbc.JdbcOdbcDriver". Universal Data Access Technology Blog. OpenLink Software. 2015-06-04. Retrieved 2016-11-18. JDBC-to-ODBC Bridge, in both Type 1 and Type 3 forms, has been available and regularly updated since its original release for JDBC 1.
  5. ^ "SequeLink Bridge Connectors & Drivers Progress DataDirect".
  6. ^ "Java 8 ODBC support".
  7. ^ "Pure Java driver for database middleware (About Database Adapters)".
  8. ^ "Software xerial.org". xerial.org. Retrieved 2020-08-25.