Разработка пользовательского интерфейса для работы с базой данных

Индекс материала
Разработка пользовательского интерфейса для работы с базой данных
Последовательность работы с БД
Все страницы

Интерфейс JDBC
Разумеется, что организовать доступ к базам данных для современного языка программирования в наше время не представляет никакой сложности. Более того, и сами языки программирования более всего оцениваются разработчиками по типу и возможностям заложенных в них средств доступа к базам данных, удобству и полноте интерфейсов. В этом смысле Java не представляет исключения. Уже в версии JDK1.1 появился пакет классов java.sql, обеспечивающий большинство функций, известных к тому времени разработчикам ODBC-приложений. В этом пакете содержится ряд замечательных классов, например: java.sql.CallableStatement, который обеспечивает выполнение на Java хранимых процедур; java.sql.DatabaseMetaData, который исследует базу данных на предмет ее реляционной полноты и целостности с получением самых разнообразных данных о типах и содержимом таблиц, колонок, индексов, ключей и т.д.; наконец, java.sql.ResultSetMetaData, с помощью которого можно выводить в удобном виде всю необходимую информацию из таблиц базы данных или печатать сами метаданные в виде названий таблиц и колонок.
Однако коренное отличие Java от других традиционных языков программирования заключается в том, что одни и те же функции доступа к базам данных с помощью универсальности и кроссплатформенности Java можно организовать чрезвычайно гибко, используя все преимущества современных объектно-ориентированных технологий, WWW и Intranet/Internet.
JDBC (Java Database Connectivity) является не протоколом, а интерфейсом и основан на спецификациях SAG CLI (SQL Access Group Call Level Interface – интерфейс уровня вызова группы доступа SQL). JDBC – это стандартный прикладной интерфейс (API) языка Java для организации взаимодействия между приложением и СУБД.
Сам по себе JDBC работать не может и использует основные абстракции и методы ODBC. Хотя в стандарте JDBC API и предусмотрена возможность работы не только через ODBC, а и через использование прямых линков к базам данных по двух- или трехзвенной схеме, эту схему используют гораздо реже, чем повсеместно используемый JDBC-ODBC-Bridge, занимающий центральное место в общей схеме взаимодействия интерфейсов.

db_1

 

db_2

Даже беглого взгляда на рисунок 1 вполне достаточно, чтобы понять – общая схема взаимодействия интерфейсов в Java удивительным образом напоминает схему ODBC с ее гениальным изобретением драйвер-менеджера к различным СУБД и единого универсального пользовательского интерфейса. JDBC Driver Manager − это основной ствол JDBC-архитектуры. Его первичные функции очень просты − соединить Java-программу и соответствующий JDBC-драйвер и затем выйти из игры. Естественно, что ODBC был взят в качестве основы JDBC из-за его популярности среди независимых поставщиков программного обеспечения и пользователей.
JDBC API − это естественный Java-интерфейс к базовым SQL-абстракциям и, восприняв дух и основные абстракции концепции ODBC, он реализовался все-таки как настоящий Java-интерфейс, согласующийся с остальными частями системы Java.
В отличие от интерфейса ODBC JDBC организован намного проще. Главной его частью является драйвер, поставляемый фирмой JavaSoft для доступа из JDBC к источникам данных. Этот драйвер является самым верхним в иерархии классов JDBC и называется DriverManager. Согласно установившимся правилам Internet, база данных и средства ее обслуживания идентифируются при помощи URL. В самом общем случае URL описывает электронный ресурс, такой как страница WWW или файл на сервере FTP, способом, который уникальным образом идентифицирует этот ресурс. JDBC же использует URL для идентификации расположений как драйверов, так и источников данных. URL для JDBC имеют следующий формат:

jdbc: <подпротокол>://<идентификатор источника данных>

где jdbc указывает, что URL ссылается на источник данных JDBC. Подпротокол определяет используемый драйвер JDBC. Например, может применяться драйвер odbc. Идентификатор источника данных определяет источник данных. Чтобы применить драйвер ODBC с источником данных ODBC dBaseTestStudent, создается URL следующего формата:

jdbc:odbc: dBaseTestStudent

В некоторых случаях вместо ODBC может быть использовано имя прямого сетевого сервиса к базе данных, например:

jdbc:dcenaming:accounts-payable

или

jdbc:dbnet://ultra1:1789/state 
В последнем случае часть URL //ultra1:1789/state представляет собой и описывает имя хоста, порт и соответствующий идентификатор для доступа к соответствующей базе данных.
Однако, как уже говорилось выше, чаще всего все-таки используется механизм ODBC благодаря его универсальности и доступности. Программа взаимодействия между драйвером JDBC и ODBC разработана фирмой JavaSoft в сотрудничестве с InterSolv и называется JDBC-ODBC-Bridge. Она реализована в виде JdbcOdbc.class (для платформы Windows JdbcOdbc.dll) и входит в поставку JDK1.1. Помимо JdbcOdbc-библиотек должны существовать специальные драйвера (библиотеки), которые реализуют непосредственный доступ к базам данных через стандартный интерфейс ODBC. Как правило, эти библиотеки описываются в файле ODBC.INI. На внутреннем уровне JDBC-ODBC-Bridge отображает методы Java в вызовы ODBC и тем самым позволяет использовать любые существующие драйверы ODBC, которых к настоящему времени накоплено в изобилии.

Типы драйверов в JDBC
Взаимодействие между приложением Java и СУБД осуществляется с помощью драйверов JDBC, обеспечивающих реализацию общих интерфейсов для конкретных СУБД и конкретных протоколов.
В JDBC определяются четыре типа драйверов:
1. Тип 1 – драйвер, использующий другой прикладной интерфейс, в частности ODBC, для работы с СУБД (так называемый JDBC-ODBC-мост). Стандартный драйвер типа 1 sun.jdbc.odbc.JdbcOdbcDriver входит в JSDK.
2.  Тип 2 − драйвер, работающий через нативные библиотеки (т.е. клиента) СУБД.
3. Тип 3 – драйвер, работающий по сетевому и независимому от СУБД  протоколу с промежуточным java-сервером, который в свою очередь  подключается к нужной СУБД.
4. Тип 4 – сетевой драйвер, работающий напрямую с нужной СУБД и не  требующий установки native-библиотек.
Предпочтение естественным образом отдается второму типу, однако если приложение выполняется на машине, на которой не предполагается установка клиента СУБД, то выбор производится между третьим и четвертым типами. Причем  четвертый тип работает напрямую с СУБД по ее протоколу, поэтому можно предположить, что драйвер четвертого типа будет более эффективным по сравнению с третьим типом с точки зрения производительности. Первый тип используется реже, в тех случаях, когда у СУБД нет своего драйвера JDBC, зато  есть драйвер ODBC.


 

Добавить комментарий


Защитный код
Обновить

Разработчику

Скрипты