web-dev-qa-db-ja.com

JavaとOracle XEの間のデータソース接続でのOCIとTHINドライバー接続の違いは何ですか?

JavaとOracle 10g XEを3つの方法(OCI、THIN、およびデータソース)を使用して接続するための以下のコードを書いています。コードは正常に実行されていますが、 THINおよびOCIとデータソース接続。

1-

public static void main (String args[]) throws SQLException
 {
  OracleDataSource ods = new OracleDataSource();
  ods.setURL("jdbc:Oracle:thin:hr/hr@localhost:1521/XE");
  Connection con = ods.getConnection();
  System.out.println("Connected");
  con.close();
 }

2-

public static void main(String args[])
     {
      try
      {
       // load Oracle driver
      Class.forName("Oracle.jdbc.driver.OracleDriver");
      // connect using Thin driver
      Connection con = DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1521:xe","hr","hr");
      System.out.println("Connected Successfully To Oracle");
      con.close();
      }
      catch(Exception ex)
      {
        ex.printStackTrace();
      }
 }

3-

public static void main(String args[])
     {
      try
      {
       // load Oracle driver
      Class.forName("Oracle.jdbc.driver.OracleDriver");
      // connect using Native-API (OCI) driver
      Connection con = DriverManager.getConnection("jdbc:Oracle:oci:@","hr","hr" );
      System.out.println("Connected Successfully To Oracle using OCI driver");
      con.close();
      }
      catch(Exception ex)
      {
        ex.printStackTrace();
      }
 }
22
Tofiq

Oracleは、データベース用に4種類のドライバーを提供していますが、ここでは、あなたが尋ねた2つのみを列挙します。

[〜#〜] oci [〜#〜] ドライバーは type 2 JDBCドライバーであり、ネイティブコードを使用してデータベースに接続します。したがって、ネイティブOracleドライバーが利用可能なプラットフォームでのオプションにすぎず、「純粋な」Java実装ではありません。

OracleのJDBC Thinドライバーは、 type 4 JDBCドライバーで、Javaソケットを使用してOracleに直接接続します。OracleのSQL * Net TCP/IPプロトコルを直接実装します。 100%Javaであり、プラットフォームに依存せず、アプレットからも実行できます(そうすべきではありません)。

30
Elliott Frisch

JDBC ThinドライバとJDBC OCIドライバの両方が同じネットワークプロトコルを使用します。サーバーの観点からは、2つの間に違いはありません。 JDBCシンドライバーは100%Javaであり、単一のスタンドアロンjarで提供されます(高度な機能にはいくつかの追加のjarが必要です)。JDBCOCIドライバーはOCI CクライアントライブラリへのJNI呼び出しを行い、したがって、インストールするOracleフルクライアントに依存します(OCIもsqlplusが使用するものです)。ほとんどの顧客が使用するJDBCシンドライバーを使用することをお勧めします。

4