sql >> Databáze >  >> RDS >> Mysql

Proč volání Class.forName(com.mysql.jdbc.Driver) registruje MySQL pro JDBC?

Zaregistruje ji, protože načte třídu do paměti a spustí statické inicializátory třídy. Kód statického inicializátoru poté zavolá do rámce JDBC a řekne „Ahoj, jsem ovladač JDBC“ (zavoláním DriverManager.registerDriver ).

Třída ovladače bude například vypadat nejasně takhle:

package com.example.jdbc;

import java.sql.DriverManager;

public class Driver implements java.sql.Driver {
    static {
        DriverManager.registerDriver(new Driver());
    }

    // ...implementation...
}

Potom, když uděláte Class.forName("com.example.jdbc.Driver") , načte třídu a spustí statický inicializátor, který vytvoří instanci a zaregistruje ji pomocí DriverManager .

Měl bych poznamenat, že jak říká Andreas , moderní ovladače JDBC k tomu nepotřebují.




  1. Dotaz MySql Nahraďte hodnotu NULL prázdným řetězcem ve výběru

  2. Vyhledávání a filtrování / zpřesňování výsledků databáze v Laravel 4

  3. Mysql - zakázková objednávka?

  4. Jak určit invariantní kulturu při použití FORMAT() na serveru SQL Server