2013-07-15 8 views
18

Aby połączyć się z bazą danych przy użyciu języka Java, większość z nas korzysta z interfejsu API JDBC.Co to jest typ 1,2,3 lub 4 sterownika JDBC?

Zazwyczaj dodajemy sterownik taki jak ojdbc14 (przeznaczony dla języka Java 1.4) w ścieżce klasy, aw programie używamy Class.forName, aby go użyć.

W przeciwieństwie do większości innych słoików, import nie pochodzi z ojdbc14, są one z java.sql, które są w samej rt.jar. Jaki typ sterownika (1,2,3,4) jest używany dla każdego z nich?

+0

Oto [link] (http://docs.oracle.com/cd/E19509-01/820-5069/6ngg83nak/index.html) do dokumentacji systemu Oracle oprócz wielkich odpowiedzi na pytanie . –

Odpowiedz

15

używasz interfejsu jdbc z klas java.sql, więc typ sterownika nie będzie miał żadnego wpływu logicznego na twój kod, będzie miał wpływ tylko na środowisko wykonawcze/wdrożenie.

Używasz także pliku ojdb14.jar firmy Oracle, prawdopodobnie z "cienką" konfiguracją jdbc, co oznacza, że ​​używasz konfiguracji sterownika typu 4. Przy takiej konfiguracji wystarczy wdrożyć plik jar JDBC w programie dostępu do bazy danych.

Pozostałe opcje obejmują mostek JDBC, który naprawdę oznacza połączenie ODBC owinięte w odzież JDBC. Oznacza to, że musisz skonfigurować swój system pod kątem prawidłowej funkcji ODBC, a następnie użyć pliku JAR, aby uzyskać dostęp do ODBC. Z powodu dodatkowego "przeskoku" danych przez ODBC można oczekiwać, że będzie nieco wolniejszy niż dostęp typu 4; istnieje jednak możliwość, że ODBC jest zoptymalizowany w tak dużym stopniu w konkretnej sytuacji, że dodatkowy przeskok jest pomijalny. Podobnie jak w przypadku większości problemów związanych z wydajnością, prawda zostaje odkryta podczas testowania (w twoim środowisku).

Sterowniki typu 2 ponownie korzystają z interfejsu API języka Java (JDBC); jednak łączą wywołania w wspólną bibliotekę w stylu C lub C++, która następnie obsługuje prawdziwe połączenie. Jeśli sterownik jest tak zoptymalizowany, że jest tak szybki, że ustawienia JNI/wywołania odrywania są pomijalne pod względem kosztów, być może może przewyższyć wydajność sterowników typu 4.

Sterowniki typu 3 zasadniczo proszą (lub przekazują) żądanie do innego zasobu sieciowego. Zwykle powoduje to dodatkowe trafienie w sieci, ale znowu nie mówi zbyt wiele o rzeczywistej wydajności.

Sterowniki typu 4 są tymi, z którymi prawdopodobnie chcesz się trzymać. Program Java łączy się bezpośrednio z bazą danych, co oznacza, że ​​jeśli wystąpi problem, zostanie przechwycony całkowicie w ramach JVM programu tworzącego połączenie (typ 1, jest w warstwie ODBC, typ 2 jest w natywnym skompilowanym kodzie, typ 3 jest w zdalnym proxy sieciowym).

Znowu nic z tego nie ma wspólnego z funkcjonalnością; jednak wszystkie one mają wpływ na sposób wdrażania, sposób debugowania i konfigurowania połączenia z bazą danych.

4

ojdbc14.jar: Zapewnia sterownik jdbc, który pomoże ci połączyć się z bazą danych.

java.sql.*: Zapewnia apis do kwerendy danych w DB i potrzebuje połączenia DB, aby zrobić to, co pomaga kierowcy.

W związku z tym mają różne role do odegrania i obie są potrzebne do rozmowy z bazą danych.

Podejście do typu sterowników, a także różne sposoby interakcji z bazą danych, która je klasyfikuje, ale docelowo jest to samo, tj. Połączenie z bazą danych.

Rodzaje kierowców są szczegółowo wyjaśnione tutaj: http://en.wikipedia.org/wiki/JDBC_driver

+2

Tylko jedna uwaga: "ojdbc14.jar" jest beznadziejnie nieaktualne. Zostało przeznaczone dla środowiska Java 1.4 i nie powinno już być używane. Zamiast tego należy użyć odpowiedniej wersji 'ojdbc6.jar' (dla Java6) lub' ojdbc7.jar' (dla Java7). –

10

„Typ” odnosi się do tego, jak kierowca implementuje API. Cztery typy to:

Typ 1: JDBC-ODBC sterownik Bridge (Most)

Typ 2: Native-API/częściowo kierowca Java (Ojczysty)

Typ 3:-protocol netto kierowca AllJava/(Middleware)

Typ 4: Wszystko kierowca Java/Native-protocol (czysty)

będą one mieć różne charakterystyki pracy. Zobacz tę link, aby uzyskać bardziej szczegółową recenzję.

5
+------+---------------------------------+-------------------------------------------------------------------------------------------+ 
| Type |    Driver    |          Descripiton          | 
+------+---------------------------------+-------------------------------------------------------------------------------------------+ 
| 1 | JDBC-ODBC Bridge (bridge)  | Translates all JDBC calls into ODBC calls.            | 
| 2 | Native API (native)    | Translates all JDBC calls into native API database calls. (e.g: DLL on windows using JNI) | 
| 3 | Network Protocol(middleware) | Translates all JDBC calls into database independent middleware specific calls.   | 
| 4 | Native Protocol(pure java thin) | Translates all JDBC calls directly into database calls.         | 
+------+---------------------------------+-------------------------------------------------------------------------------------------+