Class.forName(JDBC_DRIVER) No Longer Required in Java 6
The article discusses the purported elimination of the need to register a JDBC driver using Class.forName(JDBC_DRIVER) since Java 6. This assumption stems from the belief that the DriverManager relies on the system property "jdbc.drivers" to locate the appropriate driver.
However, printing the value of System.getProperty("jdbc.drivers") returns null, leaving users perplexed as to why their applications continue to function correctly.
Answer
The apparent functionality of the application despite the absence of the "jdbc.drivers" system property is not related to this property. Java 6 introduced the concept of service providers, which enables the JVM to automatically detect implementations of known interfaces at startup.
JDBC drivers that adhere to this mechanism are automatically registered by the DriverManager, making Class.forName() unnecessary. However, this only applies if the driver supports service provider registration.
To initiate service registration, the driver must include a directory named "services" within the META-INF directory in its JAR file. This directory should contain a text file named "java.sql.Driver" that specifies the implementing class for the JDBC driver.
The above is the detailed content of Is Class.forName(JDBC_DRIVER) Really Obsolete Since Java 6?. For more information, please follow other related articles on the PHP Chinese website!