Клас DriverManager
КласDriverManagerє рівнем керування JDBC, відстежує всі доступні драйвери та керує встановленням з'єднань між БД та відповідним драйвером.
Перш ніж підключатися до сервера БД необхідно визначитися з відповідним драйвером JDBC, який є *.jar файл. У наступній таблиці представлено списокjdbc.driversдля кількох СУБД.
Примітка: 1. Драйвери найкраще завантажувати із сайту виробників СУБД. 2. Необхідно враховувати особливості використання підключення до сервера СУБД. Наприклад, якщо використовувати БД Derby у монопольному режимі, тобто. як сховище, краще підключати драйвер org.apache.derby.jdbc.EmbeddedDriver.
Для підключення драйвера найкраще розмістити його в одній з піддиректорії програми і прописати в classpath. При використанні IDE для розробки програми підключення драйвера JDBC можна виконати через інтерфейс середовища розробки.
DriverManager.registerDriver
Щоб сказати диспетчеру драйверів JDBC, який саме драйвер слід завантажити, необхідно виконати одну з команд:
- Class.forName("повне ім'я класу")
- Class.forName("повне ім'я класу").newInstance()
- DriverManager.registerDriver(new “повне ім'я класу”)
Команди все однозначні. Завдання полягає в тому, щобclassloaderзавантажив потрібний драйвер. Наприклад:
Завантаження драйвера JDBC може здійснюватися іншим способом. При викликі Java машини (JVM) можна вказати у значенні спеціальної системної властивостіjdbc.driversназву класу JDBC драйвера:
У цьому випадку при першій спробі з'єднання з базою даних менеджер драйверів автоматично сам завантажить класвказаний у системній властивостіjdbc.drivers.
Вибирайте будь-який спосіб, орієнтуючись на те, чи потрібно вам надалі переходити на іншу СУБД. Якщо так, то, другий спосіб буде кращим. Особливо для тих, хто пише програми для широкого загалу. А їй властиво бажати самостійно вибирати, чим користуватися.
Примітка: якщо при виконанні програми ви отримуєте помилку No driver available - це, швидше за все, означає, що ви просто неправильно вказали шлях до драйвера в змінній CLASSPATH.
Класи драйверів JDBC розробляються зі статичною секцією ініціалізації, в якій екземпляр певного класу створюється та реєструється в класіDriverManagerпід час завантаження. Таким чином, програма може не викликатиDriverManager.registerDriverбезпосередньо. Цей виклик автоматично робиться самим драйвером під час завантаження класу драйвера.
Для забезпечення безпеки керування драйвером JDBCDriverManagerвідстежує, яким завантажувачем класів ClassLoader завантажено драйвер. При відкритті з'єднання з сервером БД використовується тільки драйвер, що надійшов або з локальної файлової системи, або завантажені тим же ClassLoader, яким завантажено додаток, що запросило з'єднання з БД.
З'єднання з сервером БД
DriverManager.getConnection
Встановлювати з'єднання з БД можна одразу після реєстрації драйвера JDBC. Для цього слід викликати методDriverManager.getConnection, якому передаються параметри з'єднання з БД.DriverManagerопитує кожен зареєстрований драйвер з метою визначення, який з них може встановити це з'єднання. Може виявитися, що з'єднання за параметрами URL може мати більше одного драйвера JDBC. У цьому випадку важливийпорядок, у якому відбувається це опитування, оскільки DriverManager використовуватиме перший драйвер, що відгукнувся на URL.
Міст JDBC-ODBC-Bridge
Отримати доступ до сервера бази даних можна з використанням моста JDBC – ODBC. Програма взаємодії між драйвером JDBC та ODBC була розроблена фірмою JavaSoft у співпраці з InterSolv. Ця "зв'язка" реалізована у вигляді класу JdbcOdbc.class (для платформи Windows JdbcOdbc.dll).
При використанні JDBC - ODBC необхідно брати до уваги, що, крім JdbcOdbc-бібліотек, повинні існувати спеціальні драйвера (бібліотеки), які реалізують безпосередній доступ до баз даних через стандартний інтерфейс ODBC. Як правило, ці бібліотеки описуються у файлі ODBC.INI.
На внутрішньому рівніJDBC-ODBC-Bridgeперетворює методи Java на виклики ODBC і тим самим дозволяє використовувати будь-які існуючі драйвери ODBC, яких на сьогодні накопичено вдосталь. Однак найчастіше все-таки використовується механізм ODBC завдяки його універсальності та доступності.
Особливості використання JDBC-ODBC
JDBCDriverManagerє "хребтом" JDBC-архітектури, і його основна функція дуже проста - з'єднати Java-програму та відповідний JDBC драйвер і потім "вийти з гри". Структура драйвера ODBC була взята як основа JDBC через його популярність серед незалежних постачальників програмного забезпечення та користувачів. Але може виникнути законне питання – а навіщо взагалі потрібний JDBC? Чи не легше було організувати інтерфейсний доступ до ODBC-драйверів безпосередньо з Java? Шлях через JDBC-ODBC-Bridge, як не дивно, може виявитися набагато коротшим. З чим це пов'язано:
- ODBC заснований на C-інтерфейсі і його не можна використовувати безпосередньо зJava. Виклик із Java C-коду порушує цілісну концепцію Java та пробиває пролом у захисті.
- Оскільки Java немає покажчиків, а ODBC їх використовує, то перенесення ODBC C-API в Java-API небажаний.
- Java-API необхідний, щоб досягти абсолютно чистих Java рішень. Коли ODBC використовується, то ODBC-драйвер і менеджер ODBC повинні бути інстальовані на кожній клієнтській машині. У той же час, JDBC драйвер написаний повністю на Java і може легко переноситися на будь-які платформи.
Наступний код демонструє з'єднання з сервером БД з використанням мостуjdbc-odbc-bridge: