首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.sql.Connection接口的实现在哪里?

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

Stack Overflow用户
提问于 2012-07-23 06:12:30
回答 3查看 9.6K关注 0票数 4

我使用的是来自java.sql包的接口连接

实际上,我认为它是一个类,但当我试图查看源代码时,我发现它是一个接口。

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

是什么让这个接口像这样工作呢?

要连接的数据库: MySql

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-23 06:19:38

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

当你调用

代码语言:javascript
复制
Connection conn = DriverManager.getConnection(
    "jdbc:jdbc:mysql://localhost:3306/
,    connectionProps);

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

票数 11
EN

Stack Overflow用户

发布于 2012-07-23 06:18:39

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

票数 2
EN

Stack Overflow用户

发布于 2013-05-01 22:56:44

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

  • oracle.jdbc.
OracleConnection
Wrapper
  • com.mysql.jdbc.
ConnectionImpl
  • com.microsoft.
sqlserver.jdbc.
SQLServerConnection

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11604420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档