JDBC-Treiberregistrierung: Class.forName() veraltet
Die Frage wirft Bedenken hinsichtlich der veralteten Anforderung auf, JDBC-Treiber mithilfe von Class.forName zu registrieren (), wie in einer früheren Stack Overflow-Diskussion vorgeschlagen. Darin heißt es, dass DriverManager seit Java 6 die Systemeigenschaft „jdbc.drivers“ verwendet, um den entsprechenden Treiber abzurufen, wodurch dieser Schritt überflüssig wird. Allerdings stößt das Poster beim Drucken der Eigenschaft auf einen Nullwert.
Antwort:
Das Problem liegt nicht an der Eigenschaft „jdbc.drivers“, sondern an einem Konzept eingeführt in Java 6 und JDBC4, bekannt als „Dienstanbieter“. Dabei werden Implementierungen bekannter Schnittstellen beim Start automatisch von der JVM erkannt. Kompatible JDBC-Treiber nutzen diesen Mechanismus, sodass der DriverManager sie mühelos registrieren kann. Daher wird Class.forName() nur dann überflüssig, wenn Treiber diese Funktion unterstützen.
Die Dienstregistrierung wird durch das Vorhandensein eines „services“-Verzeichnisses im META-INF-Verzeichnis der JAR-Datei des Treibers ausgelöst. Dieses Verzeichnis muss eine Textdatei enthalten, die den Namen der implementierten Schnittstelle (z. B. „java.sql.Driver“ für JDBC-Treiber) und die implementierende Klasse enthält.
Das obige ist der detaillierte Inhalt vonIst Class.forName() für die JDBC-Treiberregistrierung noch notwendig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!