web-dev-qa-db-fra.com

Quelle est la différence entre la connexion du pilote OCI et THIN avec la connexion à la source de données entre Java et Oracle XE?

J'écris les codes ci-dessous pour la connexion entre le Java et Oracle 10g XE en utilisant 3 voies (OCI, THIN et source de données), le code s'exécute avec succès mais ne fait pas de différence entre le THIN et OCI avec connexion à la source de données.

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 fournit quatre types de pilotes pour leur base de données, mais je vais seulement énumérer les deux que vous avez demandés.

Le pilote OCI est un pilote JDBC type 2 et utilise du code natif pour se connecter à la base de données. Ainsi, ce n'est qu'une option sur les plates-formes qui disposent de pilotes Oracle natifs et ce n'est pas une implémentation "pure" Java.

Le pilote JDBC Thin d'Oracle est un type 4 pilote JDBC qui utilise Java pour se connecter directement à Oracle. Il implémente directement le protocole SQL * Net TCP/IP d'Oracle. Parce qu'il est 100% Java, il est indépendant de la plate-forme et peut également fonctionner à partir d'une applet. (pas que vous devriez)

30
Elliott Frisch

Le pilote léger JDBC et le pilote OCI JDBC parlent tous deux le même protocole réseau. Du point de vue du serveur, il n'y a pas de différence entre les deux. Le pilote léger JDBC est à 100% Java et est fourni dans un seul fichier jar autonome (certains fichiers jar supplémentaires seront nécessaires pour les fonctionnalités avancées). Le pilote JDBC OCI effectue des appels JNI vers la bibliothèque client OCI C et dépend donc du client complet Oracle à installer (OCI est également ce que sqlplus utilise). Oracle recommande d'utiliser le pilote léger JDBC qui est ce que la plupart des clients utilisent. C'est le pilote le plus rapide et le plus robuste.

4
Jean de Lavarene