Class.forName(JDBC_DRIVER) – Ist es veraltet?
Trotz Behauptungen, dass Java 6 die Verwendung von Class.forName(JDBC_DRIVER) ablehnt wurde beobachtet, dass bestimmte Anwendungen auch ohne explizite Registrierung des JDBC-Treibers weiterhin ordnungsgemäß funktionieren. Dieses Verhalten hat Fragen zur Notwendigkeit dieser Methode aufgeworfen.
Einblick in die Kontroverse
Wenn System.getProperty("jdbc.drivers") null zurückgibt, zeigt dies an dass die Systemeigenschaftsmethode bei der Treiberregistrierung keine Rolle spielt. Stattdessen liegt das Rätsel in der Einführung des „Service Provider“-Konzepts in Java 6 und JDBC4.
Service Provider Mechanism
In diesem Mechanismus sind Implementierungen bekannter Schnittstellen enthalten kann von der JVM beim Start erkannt werden. Treiber, die diesem Konzept entsprechen, werden vom DriverManager automatisch registriert, sodass Class.forName() nicht erforderlich ist. Dies gilt jedoch nur für Treiber, die diesen Mechanismus unterstützen.
Die Rolle des Diensteverzeichnisses
Die Dienstregistrierung wird initiiert, wenn ein Diensteverzeichnis in der JAR-Datei des Treibers vorhanden ist , im META-INF-Verzeichnis. Innerhalb dieses Verzeichnisses muss eine Textdatei mit dem Namen der implementierten Schnittstelle (java.sql.Driver für JDBC-Treiber) und der implementierenden Klasse vorhanden sein.
Fazit
Die Methode Class.forName(JDBC_DRIVER) ist möglicherweise weiterhin erforderlich, wenn der JDBC-Treiber den Dienstanbietermechanismus nicht unterstützt. Für Fahrer, die dies tun, ist jedoch keine explizite Registrierung mehr erforderlich, da der DriverManager sie automatisch erkennt und lädt.
Das obige ist der detaillierte Inhalt vonIst „Class.forName(JDBC_DRIVER)' in modernem Java veraltet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!