8 Ekim 2022 Cumartesi

JDBC DriverManager Sınıfı - JDBC 4'ten Sonra Kullanım

Giriş
Artık Class.ForName()'i çağırmaya gerek yok. JVM driver'ı otomatik olarak yüklüyor. Sebebi ise 
Service Provider Interface (SPI) kullanılması

Örnek
MySQL sürücüsü şöyledir
public class DriverManager {
  static {
    loadInitialDrivers();
    println("JDBC DriverManager initialized");
  }
private static void loadInitialDrivers() {
  AccessController.doPrivileged(new PrivilegedAction<Void>() {
    public Void run() {
      ServiceLoader<Driver> loadedDrivers = ServiceLoader.load(Driver.class);
      Iterator<Driver> driversIterator = loadedDrivers.iterator();
      while(driversIterator.hasNext()) {
        driversIterator.next();
      }
      returnnull;
    }
  });
}
Dosya ise şöyledir
META-INF/services/java.sql.Driver
Driver ise şöyledir
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
  public Driver() throws SQLException {
  }
  static {
    try {
      DriverManager.registerDriver(new Driver());
    } catch (SQLException var1) {
      throw new RuntimeException("Can't register driver!");
    }
  }
}




Hiç yorum yok:

Yorum Gönder