2016-08-05 10 views
0

Ich konnte eine Verbindung zur Hive-Datenbank herstellen und eine Abfrage dagegen durchführen, ohne die org.apache.hive.jdbc.HiveDriver laden zu müssen? wie ist es passiert? Wir wissen, wenn wir zuerst eine Verbindung zu einer Datenbank herstellen wollen, müssen wir den Treiber mit class.forname ("vollqualifizierter Treiberklassenname") laden. aber in meinem Fall war ich in der Lage, eine Verbindung zu hive db herzustellen, ohne den obigen Code zu schreiben. Unten ist mein Code. Verbindung conn = DriverManager.getConnection (URL, Benutzername, Passwort);konnte mit Hive-Datenbank verbinden, ohne die HiveDriver-Klasse laden zu müssen

Antwort

0

„wir wissen, ob wir eine Datenbank verbinden wollen zuerst müssen wir den Treiber laden“ - na ja, sollten Sie sich auf jeden Fall, dass das Wissen aktualisieren ...

Auszüge aus der offiziellen Oracle/Sun-Dokumentation:

In frühere Versionen von JDBC, um eine Verbindung zu erhalten, mußte zuerst initialisieren Ihren JDBC-Treiber durch Aufruf die Methode Class.forName
...
Alle JDBC 4.0-Treiber, die in Ihrem Klassenpfad gefunden werden, werden automatisch geladen. (Sie müssen jedoch manuell alle Treiber laden vor JDBC 4.0 mit dem Verfahren Class.forName)

Im Rahmen seiner Initialisierung wird die Klasse Driver versuchen Last die Treiberklassen, auf die im System des Systems jdbc.drivers verwiesen wird. Dies ermöglicht es einem Benutzer, die JDBC-Treiber von ihre Anwendungen
...
Die Driver Methoden getConnection und getDrivers verwendet anpassen wurden erweitert die Java Standard Edition Service Provider Mechanismus zu unterstützen. JDBC 4.0 Treiber müssen die Datei META-INF/services/java.sql.Driver enthalten. Diese Datei enthält den Namen der JDBC-Treiberimplementierung von java.sql.Driver
...
Anwendungen müssen nicht mehr explizit laden JDBC-Treiber mit Class.forName(). Bestehende Programme, die derzeit JDBC-Treiber laden mit Class.forName() wird Arbeit ohne Änderungen

+0

dank samson mich auch weiterhin für aufzuwachen. Es ist drei Jahre her, dass ich JDBC nicht berührt habe. :) –