Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego wywołanie Class.forName(com.mysql.jdbc.Driver) rejestruje MySQL dla JDBC?

Rejestruje go, ponieważ ładuje klasę do pamięci i uruchamia statyczne inicjatory klasy. Statyczny kod inicjatora następnie wywołuje platformę JDBC, aby powiedzieć „Cześć, jestem sterownikiem JDBC” (wywołując DriverManager.registerDriver ).

Np. klasa sterownika będzie wyglądać niewyraźnie tak:

package com.example.jdbc;

import java.sql.DriverManager;

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

    // ...implementation...
}

Następnie, gdy wykonasz Class.forName("com.example.jdbc.Driver") , ładuje klasę i uruchamia statyczny inicjator, który tworzy instancję i rejestruje ją w DriverManager .

Powinienem zauważyć, że jak mówi Andreas , nowoczesne sterowniki JDBC nie wymagają tego.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jakie są różnice między mysql-connector-python, mysql-connector-python-rf i mysql-connector-repackaged?

  2. Jak zmienić akcję referencyjną klucza obcego? (zachowanie)

  3. Powinowactwo między tekstem a listą słów kluczowych?

  4. MySql pobiera sumę kolumny w każdym wierszu nowej kolumny

  5. Jak zainstalować phpMyAdmina