java.sql.Connection接口的实现在哪里?

时间:2012-07-22 22:12:30

标签: java jdbc

我正在使用java.sql包中的接口连接

其实我虽然是Class,但是当我试着查看源代码时,我发现它是一个接口。

在Connection接口的源代码中,每个方法只有一行,没有任何实现!!

是什么让这个界面像它一样工作?

要连接的数据库:MySql

连接源代码页: http://www.docjar.com/html/api/java/sql/Connection.java.html

3 个答案:

答案 0 :(得分:11)

它不是“工作”的接口,而是它的一个实现,它特定于您的特定RDBMS供应商。实际上,通常是供应商提供Connection接口的实现。

致电时

Connection conn = DriverManager.getConnection(
    "jdbc:jdbc:mysql://localhost:3306/
,    connectionProps);

驱动程序管理器搜索已注册的JDBC驱动程序,找到一个用于MySQL(它从连接字符串知道它的MySQL),将连接属性传递给实现Connection的MySQL JDBC驱动程序中的类的构造函数,并返回生成的Connection实例返回给您。例如,驱动程序可能返回实现MySqlConnection的包私有类Connection的实例,并且您的程序将使用它与RDBMS进行交互,而不知道有关该类的任何详细信息,除了事实它实现了Connection

答案 1 :(得分:2)

MySQL驱动程序(http://www.mysql.com/products/connector/)包含实际的实现。 java.sql.Connection接口只定义JDBC标准所期望的方法。每个数据库驱动程序都必须定义如何实际连接。

答案 2 :(得分:1)

以下是直接或间接实现java.sql.Connection接口的类的一些示例:

  • oracle.jdbc。 OracleConnectionWrapper
  • com.mysql.jdbc。 ConnectionImpl
  • com.microsoft。 sqlserver.jdbc。 SQLServerConnection

通过包命名空间,您可以知道它们来自哪个jdbc驱动程序。 但是这些和其他实现类不能直接使用。正如dasblinkenlight所指出的,您应该针对JDBC API进行编程,而不是每个JDBC驱动程序库中提供的类。使用API​​将允许您切换RDBMS而不破坏您的Java数据访问代码。

有趣的是,现在越来越少的人使用JDBC API。许多人使用构建在JDBC之上的对象关系映射框架,例如Hibernate。