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 представлено здесь. |
