OCI和THIN驱动程序连接与java和oracle XE之间的数据源连接有什么区别?

2022-09-01 15:23:27

我正在使用3种方式(OCI,THIN和数据源)编写以下代码,用于java和Oracle 10g XE之间的连接,代码运行成功,但不知道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();
      }
 }

答案 1

Oracle 为其数据库提供了四种类型的驱动程序,但我仅枚举您询问的两种驱动程序。

OCI 驱动程序是类型 2 JDBC 驱动程序,使用本机代码连接到数据库。因此,它只是具有本机Oracle驱动程序的平台上的一个选项,它不是“纯”Java实现。

Oracle 的 JDBC Thin 驱动程序是一种类型 4 JDBC 驱动程序,它使用 Java 套接字直接连接到 Oracle。它直接实现Oracle的SQL * Net TCP / IP协议。因为它是100%的Java,所以它是独立于平台的,也可以从小程序运行。(不是说你应该)


答案 2

JDBC 精简驱动程序和 JDBC OCI 驱动程序使用相同的网络协议。从服务器的角度来看,两者之间没有区别。JDBC 精简驱动程序是 100% Java,并且包含在一个独立的 jar 中(高级功能需要一些额外的 jar)。JDBC OCI 驱动程序对 OCI C 客户端库进行 JNI 调用,因此依赖于要安装的 Oracle 完整客户端(OCI 也是 sqlplus 使用的)。Oracle 建议使用 JDBC 精简驱动程序,这是大多数客户使用的驱动程序。它是最快的驱动程序,也是最强大的驱动程序。


推荐