Архитектура взаимодействия с СУБД
Кроме написания SQL-запросов непосредственно разработчиком, в JAM существует возможность
автоматической генерации SQL-запросов. Эта возможность реализуется Менеджером Транзакций
JAM. Работа Менеджера Транзакций основана на том, что объекты приложения имеют ряд
свойств, характеризующих взаимосвязь объекта приложения с объектом БД и то, как эти объекты
участвуют в операциях с БД (SQL-операторы select, insert, update, delete). Экранные интерфейсные
элементы (поля ввода/вывода) отображаются в поля таблиц БД. Экранные поля, отображаемые на
одну таблицу БД, группируются в группу типа Образ Таблицы (table view). Кроме этого,
существуют специальные объекты типа связь (link), описывающие связи между таблицами БД. Эта
информация в подавляющем большинстве случаев является достаточной для автоматической
генерации SQL запроса для выполнения той или иной операции с БД. Задание этой информации
может быть осуществлено или непосредственно разработчиком, или же автоматически при
импорте структуры БД (метаданных) в Репозиторий JAM. При этом для каждой таблицы БД в
Репозитории JAM создается отдельный вход (entry), в котором создается соответствующий Образ
Таблицы (table view) и свойства объектов (т.е. членов группы table view) настраиваются
соответствующим образом. Если СУБД, структура БД которой импортируется, поддерживает
конструкции "primary / foreign keys", то будут автоматически созданы объекты типа связь (link).
Для разработки приложений с использованием Менеджера Транзакций в Редакторе Экранов
предусмотрены следующие возможности:
- Окно DB Interaction - представляет в графическом виде образы всех
таблиц (Table View), присутствующих на разрабатываемом экране, и их
отношения друг с другом;
- Опция Trace On / Trace Off - в режимах приложения и тестирования
трассируются все SQL команды, генерируемые Менеджером Транзакций;
- Отладчик ядра JAM позволяет более детально анализировать работу
Менеджера Транзакций; возможна установка точек прерывания при
активизировании Менеджера Транзакций.
Менеджер Транзакций, получив ту или иную команду, анализирует соответствующие свойства
экранных объектов, строит необходимый SQL-запрос и исполняет его. Команды менеджера
Транзакций имеют очень простую и краткую форму и могут не зависеть от содержимого
экрана.
Таблица 1>
Основные команды Менеджера Транзакций
Команда | Действие |
NEW | Подготовка к вводу новых записей, в том числе и для нескольких связанных таблиц |
VIEW | Выбор информации из БД с целью просмотра |
SELECT | Выбор информации из БД с целью изменения, отличается от команды VIEW установкой блокировок |
CONTINUE | Повторить предыдущую команду VIEW или SELECT для следующей записи |
SAVE | Запись сделанных измененной в БД |
CLOSE | Перевод Менеджера Транзакции в начальное состояние |
описание.
В результате вместо написания SQL запроса, который может состоять из десятка строк, достаточно
вызвать Менеджер Транзакций с соответствующей командой. Например, err =
sm_tm_command("SELECT").
Непосредственно работа Менеджера Транзакций определяется Моделью Транзакции. Модель
Транзакции - это алгоритм реализации каждой команды Менеджера Транзакции, который
определяет все аспекты его работы, например установку блокировок при выполнении команды
SELECT (выборка для модификации), генерацию уникального первичного ключа при добавлении
новой записи (если сама СУБД не реализует этой возможности) и т.д. Для каждой поддерживаемой
СУБД в составе соответствующего JAM/DBi поставляется своя Модель Транзакции. Модель
Транзакции поставляется в исходных кодах и опытные разработчики могут таким образом
модифицировать поведение Менеджера Транзакции. Каждая Модель Транзакции имеет имя и даже
для одной СУБД в одном приложении может быть определено и использовано несколько Моделей
Транзакции.
В зависимости от контекста команды, выполняемой Менеджером Транзакций, существует
возможность управления поведением экранных объектов. Например, при выполнении команды
VIEW (транзакция "только чтение") можно запретить ввод или изменение информации в экранных
полях и сделать кнопку "Запись" неактивной. Эта возможность реализуется через механизм стилей
JAM. Стиль - это определение свойств для различных контекстов команд. Компонента JAM
Редактор Стилей, которая упоминалась выше, позволяет разработчику определять свои
стили.
JAM может работать практически со всеми распространенными РСУБД, включая Oracle, Informix,
Sybase, Ingres, Rdb, DB2, InterBase, Gupta, Netware SQL Server, ODBC-совместимые БД и др.