Dobry den,
zamyslel som sa nad ukazkovymi kodmi inicializacie JDBC ovladaca a mam mozno hlupu otazku. Takmer kazda prirucka / tutorial tvrdi, ze JDBC ovladac sa inicializuje nasledovne:

  try {
    Class.forName("com.mysql.jdbc.Driver");
  } catch (ClassNotFoundException e) {
  e.printStackTrace();
  }

a pripojenie sa ziska cez Connection = DriverManager.getConnection(...), ale to nie je dolezite.

Nie je predsa lepsie rovno vytvorit instanciu ovladaca a vyhnut sa odchytavaniu
nanajvys obskurnej ClassNotFoundException?

  import com.mysql.jdbc.Driver;

  Driver driver = new Driver();
  Connection = DriverManager.getConnection(...)

Pripadne nezvyklejsie:
  new Driver();
  Connection = DriverManager.getConnection(...)

Dokumentacia tvrdi, ze Class.forName inicializuje ovladac
a zaregistruje ho v DriverManageri (zvycajne v bloku statickej inicializacie
v implementacii Drivera). Ale podla JLS sa toto iste musi stat
pred vytvorenim prvej instancie konkretneho Drivera.

Chapem nieco zle? Alebo vsetci opisuju z prazdroja, ktory ustanovil,
ze driver sa inicializuje cez Class.forName? Alebo sa vsetci
boja vytvorenia instancie, ktora sa nepouziva? [Ci vytvorenia
instancie, ktora sa nevlozi do premennej?]

Odpovedet emailem