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

我正在使用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(); } } 

Oracle为他们的数据库提供了四种类型的驱动程序,但我只列举了你提到的两种驱动程序。

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

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

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