суббота, 6 апреля 2013 г.

Зачем нужен Class.forName при работе с БД

Это статический метод, который возвращает экземпляр типа Class. Но используется он не для получения объекта. Дело в том, что при работе с базами данных нам нужно "загрузить jdbc драйвер". То-есть нам нужно, чтобы экземпляр класса драйвера был загружен в jvm.

Да, именно экземпляр класса, а не объекта. Класс тоже представляет собой некую структуру, которая занимает оперативную память. Более того у класса может быть static-секция, которая инициализирует статические данные класса.

Например для HSQLDB, загрузка класса может выглядеть так:

Class.forName("org.hsqldb.jdbcDriver");

Класс может быть автоматически  загружен при создании экземпляра класса с помощью конструктора. Например так:

new org.hsqldb.jdbcDriver();

Но этот код не скажет нам о проблемах при загрузке класса. А Class.forName может кинуть исключение, которое можно будет обработать.


private boolean loadDriver() { try { Class.forName("org.hsqldb.jdbcDriver"); } catch (ClassNotFoundException e) { System.out.println("Драйвер не найден"); e.printStackTrace(); return false; } return true; }

Комментариев нет:

Отправить комментарий