Источник: Borland Software Corporation
Разработка приложений, связанных с базами данных, является ключевой особенностью JBuilder Professional и Enterprise. JBuilder Enterprise предназначен также для разработки распределенных приложений.
Компоненты DataExpress были разработаны как отдельные модули, для того чтобы обеспечить разделение ключевых функциональных возможностей. Такое решение позволяет компонентам DataExpress поддерживать широкий круг приложений. Модульные аспекты архитектуры DataExpress включают:
Основные функциональные возможности DataSet
Это коллекция функциональных возможностей обработки данных, доступный приложениям, использующим DataExpress. Многое из этого может применяться путем использования декларативных свойств и параметров настройки событий. Выполняемые функции включают: навигацию, доступ /обновление данных, упорядочение/фильтрацию данных, поддержка связок master-detail, поиск, ограничения, значения по умолчанию, и т.д.
Независимость источника данных
Извлечение и обновление данных из источников типа серверов Oracle или Sybase выделены в два ключевых интерфейса: Provider/Resolver. Полностью выделив извлечение и обновление данных, легко создать новые компоненты Provider/Resolver для новых источников данных. Имеются два исполнения Provider/Resolver для стандартных драйверов JDBC, которые обеспечивают доступ к таким базам данных как Oracle, Sybase, Informix, InterBase, DB2, MS SQL Server, Paradox, Base, FoxPro, Access и др. В будущем Borland и сторонние производители смогут создавать настраиваемые версии компонента Provider/Resolver для EJB, серверов приложений, SAP, BAAN, IMS, CICS, и т.д.
Встраиваемые хранилища данных (Pluggable storage)
Когда данные извлекаются из компонента Provider, они кэшируются в компоненте DataSet. Все редакционные изменения, сделанные в кэшируемом DataSet, отслеживаются и Resolver знает, что следует затем обновить в источнике данных. DataExpress имеет две опции для сохранения кэшируемых данных: MemoryStore - значение по умолчанию, и DataStore . MemoryStore кэширует все данные и редакционные изменения данных в оперативной памяти. DataStore использует Pure Java, небольшую, высокоэффективную, встраиваемую базу данных для кэширования данных и изменений в них. DataStore идеально подходит для вычислений на несетевых/мобильных компьютерах, асинхронной репликации данных, и небольших приложений баз данных.
Обеспечение связывания данных с визуальными компонентами
Компоненты DataSet из DataExpress обеспечивают мощный программируемый интерфейс, так же как и прямое связывание данных непосредственно к компонентам, распознающим данные, одним щелчком мыши. JBuilder поставляется с базирующимися на Swing визуальными компонентами, которые непосредственно связаны с компонентами DataSet.
Преимущества от использования модульной архитектуры DataExpress заключаются в следующем:
Сетевые вычисления
Как уже упоминалось, подход Provider/Resolver дает два явных преимущества в отношении произвольных источников данных. Выделим еще два выигрышных момента:
- Provider/Resolver можно легко расчленить по среднему звену. Благодаря типично транзакционной природе логики, структура Provider/Resolver идеальна для этих целей.
- Это вычислительная модель"stateless", которая идеально подходит для сетевых вычислений. Соединение между компонентом DataSet клиента и источником данных может быть разорвано после обмена данными. Если необходимо сохранить сделанные изменения обратно в источнике данных, нужно просто восстановить соединение на время выполнения необходимых транзакций.
Быстрая разработка интерфейсов пользователя
Наборы данных (DataSets) идеально подходят для быстрого формирования интерфейсов пользователя приложений, работающих с базами данных, так как они могут быть связаны с компонентами, распознающими данные, простой настройкой свойств.
Мобильные вычисления
Благодаря введению компонента DataStore, приложения DataExpress имеют мобильную базу данных, которая сохраняет свое состояние. DataStore может содержать множественные наборы данных, произвольные файлы и объекты Java. Это позволяет сохранять в единственном файле полное состояние приложения. Компоненты DataSets имеют встроенную технологию репликации для сохранения и согласования между редакционными изменениями в скопированных данных и источником данных.
Встраиваемые приложения
Небольшая высокоэффективная база данных DataStore идеальна для встроенных приложений и поддерживает полные функциональные возможности и семантику компонента DataSet.
Для получения дополнительной информации по архитектуре DataExpress, посетите сайт Borland http://www.borland.com/jbuilder/, где есть "White papers" по этой теме.
Пакеты Borland, связанные с базами данных
Основные функциональные возможности, требуемые для связи с данными, содержатся в пакетах com.borland.dx.dataset, com.borland.dx.sql.dataset и com.borland.datastore. Компоненты в этих пакетах формируют как связь между приложением и его источником данных, так и поведение, необходимое для управления данными.
Основные классы и компоненты в пакетах com.borland.dx.dataset, com.borland.dx.sql.dataset и com.borland.datastore перечислены ниже вместе с кратким описанием в таблице. В крайнем справа столбце этой таблицы приведены часто используемые свойства класса или компонента. Некоторые из них сами по себе являются объектами, обладающими целым рядом свойств. Эти комплексные свойства объектов заканчиваются словом Descriptor и содержат ключевые свойства, которые обычно должны быть установлены для компоненты, чтобы его можно было использовать.
Компонент/класс |
Описание |
Часто используемые свойства Базы данных |
ConnectionDescriptor |
Компонент, требуемый для доступа к данным, сохраненным на удаленном сервере; компонент базы данных, управляющий подключением JDBC к базе данных сервера SQL.
См. " Connecting to a database " (" Подключение к базе данных ") для более подробного описания и обучающей программы использования этого компонента. |
Объект ConnectionDescriptor содержит особенности подключения драйвера, URL, имя пользователя, и пароль. Задействуется при использовании свойства Connection. |
DataSet |
Абстрактный класс, который регулирует основное поведение набора данных; обеспечивает также инфраструктуру хранения данных, поддерживая двухмерную матрицу, которая организована в строки и столбцы. Имеется концепция текущей позиции строки, которая позволяет вам перемещаться по строкам данных и управляет "псевдозаписью", сохраняя текущую новую или отредактированную запись, пока они не зарегистрированы в DataSet. Поскольку DataSet - это наследник ReadWriteRow, в него заложены способы считывать и проставлять значения полей. |
|
SortDescriptor |
Объект SortDescriptor содержит свойства, которые воздействуют на очередность обращения к данным и отображения их в компоненте UI.
Учебное пособие можно найти в " Sorting data "(" Сортировка данных "). |
Устанавливается с использованием свойства сортировки. |
MasterLinkDescriptor |
Объект MasterLinkDescriptor содержит свойства для управления отношениями master-detail между двумя компонентами DataSet.
Учебное пособие см. в " Establishing a master-detail relationship "(" Установление отношений master-detail ") . |
Задействуется при использовании свойства MasterLink для DataSet. |
StorageDataSet |
Класс, который расширяет DataSet, обеспечивая выполнение сохранения данных и управление структурой DataSet.
Вы заполняете компонент StorageDataSet данными, извлекая информацию из удаленной базы данных (типа InterBase или Oracle), или импортируя данные, сохраненные в текстовом файле. Это делается путем обращения к одному из его подклассов: QueryDataSet, ProcedureDataSet, или TableDataSet. |
Свойство TableName определяет источник данных компонента StorageDataSet.
Свойство MaxRows определяет максимальное число строк, которые DataSet может первоначально содержать.
Свойство ReadOnly управляет доступом к записи данных. |
DataStore |
Компонент DataStore обеспечивает замену для MemoryStore, что дает возможность постоянного сохранения данных. DataStore поддерживает высокоэффективное кэширование данных и компактное сохранение состояния объектов для DataExpress DataSets, произвольных файлов, и объектов Java. Компонент DataStore использует единственный файл для сохранения одного или более потоков данных. Файл DataStore имеет иерархическую каталоговую структуру, которая связывает название и состояние каталога со специфическим (конкретным) потоком данных. С DataStore можно работать, как с любой базой данных SQL - вы можете подключаться к ней, как подключались бы к любому серверу, посылать SQL запросы, и т.д.
Более детальное описание компонента DataStore см. в " Persisting and storing data in a DataStore " in " Database Application Developer's Guide " ("Х ранение данных и состояний данных в DataStore ") в " Руководство Разработчика Приложения Базы данных ", и в " The DataStore User's Guide " (" Руководство пользователя DataStore" ). |
Кэширование и устойчивость StorageDataSets в DataStore достижимы путем настройки требуемых параметров двух свойств StorageDataSet, называемых Store и StoreName. По умолчанию, все StorageDataSets используют MemoryStore, если свойство Store не установлено. В настоящее время MemoryStore и DataStore - единственные опции для свойства Store. Свойство StoreName - это уникальное название, связанное с данным StorageDataSet в DataStore. |
DataStoreDriver |
DataStoreDriver - драйвер JDBC для DataStore.
Драйвер поддерживает как локальный, так и удаленный доступ. Оба типа доступа требуют имя пользователя (любая последовательность символов, без предварительной установки) и пустой пароль. |
|
QueryDataSet |
Компонент QueryDataSet сохраняет результат SQL-запроса, выполняемого на сервере баз данных. Этот компонент работает с компонентом Database, чтобы подключиться к серверу баз данных, и выполняет указанный запрос с параметрами (если таковые имеются). Как только результат будет сохранен в компоненте QueryDataSet, Вы можете работать с данными, используя DataSet API.
Более подробное описание и учебное пособие по этому компоненту см. в " Querying a database " (" Запросы в базу данных "). |
Задействуется при использовании свойства Query . |
ProcedureDataSet |
Компонент ProcedureDataSet содержит результаты работы хранимой процедуры, выполненной на сервере баз данных. Этот компонент работает с компонентом базы данных, аналогично компоненту QueryDataSet. Более подробное описание и учебное пособие по этому компоненту см. в " Obtaining data through a stored procedure " (" Получение данных в результате процедуры сохранения "). |
|
ProcedureDescriptor |
Объект ProcedureDescriptor включает инструкцию SQL, параметры, компоненты базы данных и другие свойства. |
Задействуется при использовании свойства компонента ProcedureDataSet. |
TableDataSet |
Используйте этот компонент при импорте данных из текстовых файлов. Этот компонент расширяет класс DataSet. Он имитирует функциональные возможности сервера SQL, только без подключения к серверу. Более подробное описание и учебное пособие по этому компоненту см. в " Importing data from a text file " (" Импортирование данных из текстового файла "). |
Свойство (Inherited) DataFile (Унаследованный Файл Данных) определяет имя файла, из которого были загружены данные в DataSet и в который следует сохранять данные. |
DataSetView |
Этот компонент обеспечивает дополнительное "представление" данных в существующем StorageDataSet. Он имеет свое собственное (унаследованное) свойство Sort, которое позволяет, давая новые значения, получать различные затребованные представления данных. Он имеет также фильтрационные и навигационные возможности, которые являются независимыми от связанного с ним StorageDataSet.
Более подробное описание и учебное пособие по этому компоненту см. в " Presenting an alternate view of data " (" Получение дополнительного представления данных "). |
Свойство StorageDataSet указывает на компонент, содержащий данные, представление которых он обеспечивает. |
Column |
Column (Столбец) представляет набор всех строк данных определенного вида, например, все значения Name в таблице. Column получает свое значение, когда DataSet подвергается обработке или в результате вычислений.
Column управляется своим компонентом StorageDataSet.
Более подробное описание и учебное пособие по этому компоненту см. в "Working with columns" ("Работа со столбцами").
Вы можете настроить свойства в столбцах таким образом, чтобы опции настройки, которые затрагивают полный столбец данных, например, шрифт, были размещены в одном месте. Инструментальные средства проекта JBuilder открывают доступ к свойствам столбцов, при двойном щелчке на любой StorageDataSet в содержимом панели, после чего можно выбрать столбец, с которым вы хотите работать. Свойства и события выбранного компонента Column отображаются либо в проектировщике Column (только свойства), либо в инспекторе Column и могут быть отредактированы в любом месте. |
|
DataRow |
Компонент DataRow - это набор данных всех столбцов для отдельной строки, где каждая строка - законченная запись информации. Компонент DataRow использует те же самые столбцы DataSet, в котором он был создан.
Названия столбцов в DataRow - это названия полей. |
С DataRow удобно работать при сравнении данных в двух строках или при поиске данных в DataSet.
Его можно использовать во всех методах DataSet, которые требуют ReadRow или ReadWriteRow. |
ParameterRow |
Компонент ParameterRow имеет Column для каждого столбца связанного набора данных, который вы можете запросить. Поместите значения, которые вы хотите использовать в запросе, в ParameterRow и свяжите их с запросом через названия их параметров (которые являются названиями столбцов ParameterRow).
Более подробное описание и учебное пособие по этому компоненту см. в " Using parameterized queries to obtain data from your database " (" Использование параметризованных запросов для получения данных из вашей базы данных "). |
|
DataModule |
DataModule - это интерфейс пакета com.borland.dx.dataset. Класс, который представляет DataModule, будет признан JBuilder как элемент, который содержит различные компоненты набора данных, сгруппированные в модуль данных. Вы создаете новый, пустой модуль данных, выбирая значок Data Module в диалоге меню File/New. Затем, используя палитру компонентов, вы размещаете в модуле различные объекты DataSet, и обеспечиваете подключение, запросы, сортировку, и настройку бизнес-логики. Модули данных упрощают повторное и многократное использование набора компонентов DataSet. Например, один или более классов UI в вашем приложении может использовать общедоступный экземпляр созданного вами модуля данных DataModule.
Более подробное описание и учебное пособие по этому компоненту см. в " Using data modules to simplify data access " (" Использование модулей данных упростить доступ к данным "). |
|
В программных пакетах com.borland.dx.dataset, com.borland.dx.sql.dataset и com.borland.datastore имеется много других классов и компонентов, а также несколько поддерживаемых классов есть и в других пакетах типа Util и View. Детальная информация о пакетах и классах библиотеки DataExpress может быть найдена в документации DataExpress LibraryReference.