еда полезней и вкусней.
410013796724260
• Webmoney
R335386147728
Z369087728698
Модуль взаимодействия с сервером БДУтилита util-db предназначен для установления соединения с сервером базы данных (БД) и выполнения SQL-запросов бандлов приложения JaBricks объектов БД. При взаимодействии с СУБД модуль util-db использует бандлы JDBC-драйверов. Зависимость модуля util-db от драйверов JDBC, исполненных по технологии бандлов, определяет необходимость обязательной их инсталляции в приложение согласно спецификации OSGi. Поскольку разным приложениям требуются только определенные драйверы JDBC для взаимодействия с СУБД, то модуль util-db представлен в нескольких вариантах. По́стфикс в наименовании бандла определяет используемый в модуле драйвер JDBC; отсутствие по́стфикса в наименовании утилиты util-db определяет возможность его использования со всеми доступными серверами БД. Модуль util-db может взаимодействовать с серверами БД типа Oracle, MSSQL, PostgreSQL, MySQL, Apache Derby. Вместе с util-db в конфигурацию приложения JaBricks необходимо включить соответствующие выполненные в виде бандлов драйверы JDBC. Вы можете скачать бандлы JDBC драйверов, которые использует util-db. Для подключения к СУБД на сайте имеется модуль db-connection, который, по сути, является интерфейсной оболочкой утилиты util-db. Модуль db-connection имеет форму в виде диалогового окна с компонентами отпределения логина и пароля. Остальные параметры подключения (тип провайдера, хост, порт и т.д) определяются в файле инициализации приложения. Ниже представлены описания доступных в util-db драйверов JDBC различных СУБД, «порожденные» модули util-db и примеры их использования. JDBC драйверы и бандлы взаимодействия с СУБДOracle Утилита util-db-oracle, в отличие от util-db, в приложении JaBricks можно использовать только для взаимодействия с SQL-сервером Oracle. Параметры подключения к Oracle, определяемые в файле инициализации приложения, представлены здесь. MSSQL Для взаимодействия только с сервером MSSQL в приложении JaBricks можно использовать утилиту util-db-mssql. Параметры подключения к серверу MSSQL, определяемые в файле инициализации приложения, представлены здесь. MySQLОбычный драйвер JDBC для взаимодействия с сервером MySQL (mysql-connector-java-XXX-bin.jar) выполнен не по технологии OSGi-бандла. Для его использования в приложении JaBricks драйвер необходимо преобразовать в бандл. Пример проекта преобразования JDBC драйвера MySQL в бандл представлен здесь. На сайте можно скачать бандл драйвера com.mysql.jdbc-5.1.7.jar. Для взаимодействия только с сервером MySQL в приложении JaBricks можно использовать бандл util-db-mysql. Параметры подключения к серверу MySQL, определяемые в файле инициализации приложения, представлены здесь. PostgreSQLJDBC драйвер взаимодействия с сервером PostgreSQL, выполненные в виде бандлов, можно скачать из Maven репозитория. На сайте можно скачать OSGi-бандл JDBC драйвера org.postgresql-9.1.jar. Бандл util-db-postgres.jar можно использовать только для взаимодействия с сервером PostgreSQL. Параметры подключения к СУБД PostgreSQL, определяемые в файле инициализации приложения, представлены здесь. Apache DerbyСУБД Apache Derby, в отличие от представленных выше SQL серверов, функционирует под управлением JVM. При использовании Derby имеется возможность выполнить либо сетевое (многопользовательское) подключение к серверу, либо монопольное подключение. Во втором случае сервер Derby работает в режиме "EmbeddedDriver" и запускается под управлением виртуальной машины JVM вместе с приложением. Пример использования сервера Derby в режиме "EmbeddedDriver" представлен здесь. На сайте можно скачать бандл JDBC драйвера для Derby org.apache.derby-10.10.1000001.jar. Бандл util-db-derby можно использовать только для взаимодействия с сервером Apache Derby в монопольном режиме (Embedded Derby JDBC driver), т.е. для создания SQL-соединения типа «org.apache.derby.jdbc.EmbeddedDriver». Параметры подключения к серверу Apache Derby, определяемые в файле инициализации приложения, представлены здесь.
Примечание : Описание модуля util-dbМодуль util-db включает базовый класс DAOImpl, который реализует интерфейс IDAO. Классы DAOOracle, DAOMSSQL, DAOPostgres, DAOMySQL, DAODerby наследуют свойства DAOImpl и переопределяют методы взаимодействия с соответствующим сервером БД. «Порожденные» от util-db модули включают один из классов, наследующего свойства DAOImpl и определяющего тип провайдера СУБД. Так, к примеру, модуль util-db-oracle имеет только класс DAOOracle, а модуль util-db-mysql — класс DAOMySQL и т.д. Методы интерфейса IDAO
public interface IDAO { // Объект описания подключения к серверу public void setConnect (Connect connect); public Connect getConnect (); // Метода создания соединения с сервером public Connection createConnection (Connect connect); // Метод чтения соединения с сервером public Connection getConnection (); // Метод отключения от сервера БД public void disconnect (); // Методы определения провайдера БД public boolean isOracle (); public boolean isMSSQL (); public boolean isPostgres(); public boolean isMySQL (); public boolean isDerby (); // Метод выполнения SQL-запроса public boolean execSQL (String sql); // Чтение ошибки выполнения транзакции public String getExceptionText(); } setConnect (Connect) getConnect createConnection (Connect) getConnection disconnect execSQL (sql) getExceptionText Методы isOracle, isMSSQL, isPostgres, isMySQL, isDerby определяют принадлежность объекта реализации к конретному провайдеру БД. Данные методы можно использовать для проверки при одновременном соединении приложения с разными серверами БД. Использование модуля util-db в бандлахЧтобы можно было использовать util-db в бандлах необходимо в секции <Import-Package> манифеста MANIFEST.MF указать наименование пакета org.jabricks.db. После этого модуль util-db станет доступным в бандле. Для взаимодействия с сервером БД необходимо установить соединение java.sql.Connection. Предполагается, что данное соединение создает модуль подключения form-connection. Следующий пример демонстрирует получение JDBC соединения java.sql.Connection в модуле util-db. Листинг примера получения ConnectionВ коде сначала выполняется чтение объекта подключения Connect, который включает реализацию класса DAOImpl с установленным соединением к конкретному серверу БД. После этого можно получить JDBC соединение java.sql.Connection для выполнения различных транзакций. import org.jabricks.db.objects.Connect; import org.jabricks.db.interfaces.IDAO; import java.sql.Connection; . . . Connect connect = (new DAOImpl()).getConnect(); if (connect != null) { IDAO dao = connect.getDAO(); Connection connection = dao.getConnection(); } Пример выполнение SQL-запросаМетод выполнения SQL-запроса execSQL (sql) возвращает логический результат выполнения. Если транзакция завершается с ошибкой, то информация об ошибке (код и текст ошибки) логируется в файл и/или консоль в зависимости от установленных в системе флагов протоколирования. Вместе с информацией об ошибке логируется также текст SQL-запроса. Следующий код демонстрирует пример использования util-db в бандле для выполнения SQL-запроса. Сначала необходимо получить JDBC соединение Connection. После этого запоминается и сбрасывается флаг autocommit. Этого можно было бы и не делать, поскольку транзакция касается только одной записи в одной таблице. Далее транзакция выполняется и завершается (commit). При наличии ошибки исполнения транзакции выполняется откат (rollback) и вывод текста ошибки в консоль.
import org.jabricks.db.objects.Connect; import org.jabricks.db.interfaces.IDAO; import java.sql.Connection; . . . Connect connect ; // Объект описания подключения IDAO dao ; // Объект доступа к серверу БД Connection connection; // Объект соединения с сервером boolean autocommit; // Флаг завершения транзакции . . . connect = (new DAOImpl()).getConnect(); dao = new DAOImpl(); connection = dao.getConnection(); autocommit = true; String sql = "insert into tableName (id, name) " + "values (15, 'JaBricks')"; try { // Запоминаем autocommit autocommit = connection.getAutoCommit(); connection.setAutoCommit(false); if (!dao.execSQL(sql)) throw new SQLException("Текст ошибки"); // Завершение транзакции connection.commit(); // Восстановление autocommit connection.setAutoCommit(autocommit); } catch (SQLException e){ try { // Откат транзакции connection.rollback(); } catch (SQLException e1) { } // Информация об ошибке String error = dao.getExceptionText(); System.err.println(error); // Восстановление autocommit connection.setAutoCommit(autocommit); } Чтобы получить в бандле информацию об ошибке необходимо использовать метод getExceptionText(). В примере информация об ошибке выводится непосредственно в консоль. Лучше использовать модуль логирования util-logger. ЗависимостиМодуль доступа к серверам БД util-db не зависит от других модулей приложения JaBricks и имеет связи только с JDBC-драйверами, представленными в первой колонке таблицы. В последней колонке таблицы представлены разновидности модуля util-db для взаимодействия с конкретной СУБД :
В таблице представлены бандлы взаимодействия с СУБД и JDBC драйверов, которые можно скачать. При необходимости Вы можете использовать собственные драйверы JDBC. Подключение модуля util-dbДля подключения модуля util-db в приложение JaBricks необходимо :
GAV параметры модуля util-db имеют следующие значения :
Подробнее о включении модуля в приложение Jabricks представлено здесь. |