我能够连接到hive数据库并对其执行查询而无需加载org.apache.hive.jdbc.HiveDriver?这怎么发生的? 我们知道如果我们想首先连接到任何数据库,我们需要使用class.forname加载驱动程序("完全限定的驱动程序类名称")。但在我的情况下,我能够连接到Hive数据库而无需编写上述代码。下面是我的代码。 Connection conn = DriverManager.getConnection(url,username,password);
答案 0 :(得分:0)
"我们知道如果我们想先连接到任何数据库,我们需要加载驱动程序" - 好吧,你一定要更新那个知识...
摘自官方Oracle / Sun文档:
在以前的JDBC版本中,要获得连接,首先必须这样做 通过调用方法
Class.forName
来初始化JDBC驱动程序
...
在类路径中找到的任何JDBC 4.0驱动程序都是 自动加载。 (但是,您必须手动加载任何驱动程序 在JDBC 4.0之前使用方法Class.forName
)
作为初始化的一部分,DriverManager类将尝试 加载
jdbc.drivers
系统中引用的驱动程序类 属性。这允许用户自定义所使用的JDBC驱动程序 他们的应用程序
... ...用于DriverManager方法 getConnection 和 getDrivers 已得到增强,可支持Java Standard Edition Service Provider机制。 JDBC 4.0驱动程序 必须包含文件META-INF/services/java.sql.Driver
。这个文件 包含JDBC驱动程序实现的名称 java.sql.Driver
...
应用程序不再需要明确表达 使用Class.forName()加载JDBC驱动程序。现有的程序 目前使用Class.forName()加载JDBC驱动程序将继续 没有修改的工作