sql >> Databasteknik >  >> RDS >> Mysql

Varför registreras MySQL för JDBC genom att anropa Class.forName(com.mysql.jdbc.Driver)?

Den registrerar den eftersom den laddar klassen i minnet och kör klassens statiska initierare. Den statiska initialiseringskoden anropar sedan JDBC-ramverket för att säga "Hej, jag är en JDBC-förare" (genom att anropa DriverManager.registerDriver ).

Till exempel kommer förarklassen att se vagt ut så här:

package com.example.jdbc;

import java.sql.DriverManager;

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

    // ...implementation...
}

Sedan när du gör Class.forName("com.example.jdbc.Driver") , den laddar klassen och kör den statiska initieraren, som skapar en instans och registrerar den med DriverManager .

Jag bör notera att som Andreas säger , moderna JDBC-drivrutiner behöver du inte för att göra detta.




  1. Django skapar automatiskt primärnycklar för befintliga databastabeller

  2. Vad är varaktigheten för referenser och anslutningar i MySQL?

  3. MySQL Bestäm längsta VarChar-längd

  4. mysql få skillnad istället för SUM