How is driver class located in JDBC4

前端 未结 3 1425
孤独总比滥情好
孤独总比滥情好 2020-11-27 06:56

One of the great additions in version 4 of JDBC You don\'t have to explicitly load the driver by calling Class.forName anymore. When your application attempts t

3条回答
  •  盖世英雄少女心
    2020-11-27 07:35

    Some information about JDBC4 driver loading taken from : http://www.onjava.com/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html

    When the method getConnection is called, the DriverManager will attempt to locate a suitable driver from among the JDBC drivers that were loaded at initialization and those loaded explicitly using the same class loader as the current application.

    The DriverManager methods getConnection and getDrivers have been enhanced to support the Java SE Service Provider mechanism (SPM). According to SPM, a service is defined as a well-known set of interfaces and abstract classes, and a service provider is a specific implementation of a service. It also specifies that the service provider configuration files are stored in the META-INF/services directory. JDBC 4.0 drivers must include the file META-INF/services/java.sql.Driver. This file contains the name of the JDBC driver's implementation of java.sql.Driver. For example, to load the JDBC driver to connect to a Apache Derby database, the META-INF/services/java.sql.Driver file would contain the following entry:

    org.apache.derby.jdbc.EmbeddedDriver
    

    Now coming to your question.

    My question is how? What if there are multiple drivers in the classpath?

    As a class loader rule, any class found first will be loaded and if it is already loaded then will not be reloaded by the class loader.

提交回复
热议问题