Java jdbcapi规范与实现

Java jdbcapi规范与实现,java,jdbc,Java,Jdbc,在编写了一些简单的JDBC程序之后,我正在浏览JDBCAPI(主要是java.sql包) 例如,在java.sql中,以下是声明: public interface Connection extends Wrapper, AutoCloseable 因此,据我所知,这些规范必须由数据库供应商以JDBC驱动程序的形式实现 在我的示例程序中,我使用了H2DB,因此我下载了JDBC驱动程序 现在,这个jar应该有java.sql.Connection的实现,这是我在.jar(jdbc驱动程序)中看到

在编写了一些简单的JDBC程序之后,我正在浏览JDBCAPI(主要是java.sql包)

例如,在java.sql中,以下是声明:

public interface Connection extends Wrapper, AutoCloseable
因此,据我所知,这些规范必须由数据库供应商以JDBC驱动程序的形式实现

在我的示例程序中,我使用了H2DB,因此我下载了JDBC驱动程序

现在,这个jar应该有java.sql.Connection的实现,这是我在.jar(jdbc驱动程序)中看到的(在-->org.h2.jdbc包下):

jdbc驱动程序jar确实实现了java.sql.Connection,正如预期的那样;但是,它从哪里获得java.sql.Connection?(它只是实现java.sql.Connection),java.sql.Connection的定义来自哪里


任何澄清这个疑问的指针都会很有帮助。

它在JDK中,因为您可以在中查看。

谢谢您的回复;所以这意味着当他们编译时,他们从JDK本身获得定义。如果是这样的话,我相信实现者的源代码中会有这样的语句:import java.sql.Connection.Yes,当然。除非他们是受虐狂,喜欢每次都输入java.sql.Connection。谢谢,我知道了,下载了mysql Connector/J源代码来了解他们是如何实现的。再次感谢@vipinkoul有时人们不使用导入,而是使用类的完全限定名来避免名称冲突(例如MySQL调用的实现类与
java.sql
中的接口相同)。虽然在您的特定情况下,我猜您实际上没有下载源代码,而是让IDE对Java代码进行反向工程,因为实际的源代码不一样,并且使用导入:@markrottveel:正是我使用eclipse IDE获取源代码的(尽管它显示的源代码很小)。为了理解它,我下载了Connector/J。非常感谢分享您的专家建议。最好的评论是,我也对答案发表了评论:您使用的是反向工程的H2源,而不是实际的H2源,这通常更容易理解。
public class org.h2.jdbc.JdbcConnection extends org.h2.message.TraceObject implements java.sql.Connection {