19

JDBCには次のようなさまざまなドライバーがあることに気づきました。

  1. タイプ1ドライバー
  2. タイプ2ドライバーなどからタイプ4

なぜ彼らはタイプ1、タイプ2などのような名前を得たのですか?ロジックはありますか?

4

5 に答える 5

22

タイプ番号は、ドライバーが実際にデータベースと通信する方法について何かを示します。

  1. ODBCAPI経由。
  2. DBベンダー固有のAPI経由(WindowsのDLLファイルなどでJNI呼び出しを使用)。
  3. 一般的なネットワークプロトコル経由(TCP / IPプロトコルなどのソケットを使用)。
  4. DBベンダー固有のネットワークプロトコル経由(まだソケット付き)。

一般に(偶然ですが)、型番号がどれだけ大きいか、JDBCドライバーのパフォーマンスはどれほど優れているか。

于 2010-03-04T17:58:58.197 に答える
10

私はそれがJDBCへのSunのオリジナル(1997)のイントロに戻ると信じています:

現時点で認識しているJDBCドライバーは、通常、次の4つのカテゴリのいずれかに当てはまります。

  1. JDBC-ODBCブリッジとODBCドライバー:JavaSoftブリッジ製品は、ODBCドライバーを介したJDBCアクセスを提供します。ODBCバイナリコード、および多くの場合データベースクライアントコードは、このドライバを使用する各クライアントマシンにロードする必要があることに注意してください。結果として、この種のドライバーは、クライアントのインストールが大きな問題ではない企業ネットワーク、または3層アーキテクチャーでJavaで記述されたアプリケーションサーバーコードに最も適しています。

  2. ネイティブAPIの一部Javaドライバー:この種のドライバーは、JDBC呼び出しを、Oracle、Sybase、Informix、DB2、またはその他のDBMSのクライアントAPIでの呼び出しに変換します。ブリッジドライバと同様に、このスタイルのドライバでは、各クライアントマシンにバイナリコードをロードする必要があることに注意してください。

  3. JDBC-Net純粋なJavaドライバー:このドライバーは、JDBC呼び出しをDBMSに依存しないネットプロトコルに変換し、サーバーによってDBMSプロトコルに変換されます。このネットサーバーミドルウェアは、純粋なJavaクライアントをさまざまなデータベースに接続できます。使用される特定のプロトコルは、ベンダーによって異なります。一般に、これは最も柔軟なJDBCの代替手段です。このソリューションのすべてのベンダーが、イントラネットでの使用に適した製品を提供する可能性があります。これらの製品がインターネットアクセスもサポートするためには、Webが課すセキュリティ、ファイアウォールを介したアクセスなどの追加要件を処理する必要があります。

  4. ネイティブプロトコルの純粋なJavaドライバー:この種のドライバーは、JDBC呼び出しをDBMSが直接使用するネットワークプロトコルに変換します。これにより、クライアントマシンからDBMSサーバーへの直接呼び出しが可能になり、イントラネットアクセスの優れたソリューションになります。これらのプロトコルの多くは独自仕様であるため、データベースベンダー自体が主要なソースになります。いくつかのデータベースベンダーがこれらを進行中です。

最終的には、ドライバーカテゴリ3および4がJDBCからデータベースにアクセスするための推奨される方法になると予想されます。ドライバーカテゴリ1および2は、直接の純粋なJavaドライバーがまだ利用できない暫定的なソリューションです。コネクタを必要とするカテゴリ1および2(下の表には示されていません)にはさまざまなバリエーションがありますが、これらは一般的にあまり望ましくないソリューションです。カテゴリ3および4は、自動インストール(たとえば、JDBCドライバをそれを使用するアプレットとともにダウンロードする)を含む、Javaのすべての利点を提供します。


実際には、タイプ1、2、3、および4という名前ではなく、JDBC-ODBCブリッジとODBCドライバー、ネイティブAPIの一部Javaドライバー、JDBC-Net純粋なJavaドライバー、およびネイティブプロトコルの純粋なJavaドライバーという名前が付けられていることに注意してください。 。それぞれの名前は一口だったので、人々はすぐに代わりに彼らの番号でそれらを参照し始めました。

于 2010-03-04T22:45:46.493 に答える
4

数字はあまり有益ではありません。私はそれを次のように考える方が便利だと思います:

  • ローカルAPI(1,2)とネットワークプロトコル(3、4)
  • データベースに依存しない(奇数)vsデータベース固有(偶数)

数字を思い出せませんでしたが、誰かが「ここではタイプ4ドライバーを使用しています」と言ったとき、彼らが何について話しているのかを知るために2つのイエスノー質問をすることができました。

于 2010-03-04T17:40:58.420 に答える
0

http://en.wikipedia.org/wiki/JDBC_driver

論理的ではないようです、私が推測する単なる怠惰です!

更新:問題は、タイプapple、タイプorange :)を呼び出す代わりに、タイプ1、タイプ2などと呼ぶロジックがあるかどうかでした。ドライバーの種類が異なり、状況によって機能する/機能しないことは理解していますが、「TypeJDBC-ODBC」や「TypeJO」ではなく「Type1」という名前に理由がないのはなぜですか。

于 2010-03-04T17:26:57.980 に答える
0

つまり、各タイプは異なる戦略を使用し、異なるタイプの実装に対してより適切に機能します。怠惰ではなかったと思います。特定の状況に最適なタイプをより簡単かつ明確に選択できるようになったと思います。

于 2010-03-04T17:29:02.187 に答える