Объектно-реляционное отображение
Данный слой состоит из классов, которые с помощью драйверов доступа к БД осуществляют взаимодействие с СУБД. На рисунке 6.2 приведён пример базовых классов, на основе которых можно строить слой объектно-реляционного отображения.
Рисунок 6.2 – Классы объектно-реляционного отображения
В таблице приведено описание классов, изображённых на рисунке 6.2.
Таблица 6.4
Описание базовых классов объектно-реляционного отображения
Имя класса | Описание |
TConnection | Предназначен для управления соединением к базам данных и настройки параметров соединения. |
TTransactionObject | Предназначен для управления транзакцией (открытие, закрытие, откат) |
TDBObject | Предназначен для работы с базой данных. Использует классы TConnection и TTransactionObject |
TExecuteObject | Обеспечивает работу с SQL. |
Характеристики класса «TConnection»
Свойства класса TConnection представлены в таблице 6.5.
Таблица 6.5
Свойства класса TConnection
Название | Описание |
ServerName: string | Сетевое имя сервера СУБД |
DataBaseName: string | Полный локальный путь к файлу БД |
UserName: string | Имя пользователя СУБД используемое для авторизации |
Password: string | Пароль доступа к СУБД |
DataBase: TIBDatabase | Компонент доступа к базе данных, с которой работает объект |
TransactionObject: TTransactionObject | Транзакцию, с которой работает объект |
Методы класса TConnection представлены в таблице 6.6.
Таблица 6.6
Методы класса TConnection
Название | Описание |
Connect() | Открытие соединения с базой данных |
Disconnect() | Закрытие соединения с базой данных |
Характеристики класса «TTransactionObject»
Класс TTransactionObject является оболочкой к компоненту TIBTransaction, реализующего функции по работе с транзакциями. Свойства класса TTransactionObject представлены в таблице 6.7.
Таблица 6.7
Свойства класса TTransactionObject
Название | Описание |
Transaction: TIBTransaction | Определяет с какой транзакцией работает объект. |
InTransaction: Boolean | Определяет запущена ли транзакция у объекта. |
Методы класса TTransactionObject представлены в таблице 6.8.
Таблица 6.8
Методы класса TTransactionObject
Название | Описание |
StartTransaction() | Запуск транзакции |
Commit() | Подтверждение транзакции |
Rollback() | Отмена транзакции |
Характеристики класса «TDBObject»
Поля класса TDBObject представлены в таблице 6.9.
Таблица 6.9
Поля класса TDBObject
Название | Описание |
fOwn_transaction: Boolean | Определяет использует ли объект свою транзакцию или чужую переданную при создании класса. |
Свойства класса TDBObject представлены в таблице 6.10.
Таблица 6.10
Свойства класса TDBObject
Название | Описание |
Connection: TConnection | Подключение, используемое данным объектом. |
TransactionObject: TTransactionObject | Транзакция, используема данным объектом |
Класс TDBObject содержит те же методы что и класс TTransactionObject для реализации возможности работы со своей собственной транзакцией. Соответственно если он использует чужую транзакцию, он ничего не может с ней делать. Методы класса TDBObject представлены в таблице 6.11.
Таблица 6.11
Методы класса TDBObject
Название | Описание |
StartTransaction() | Запуск транзакции |
Commit() | Подтверждение транзакции |
Rollback() | Отмена транзакции |
Характеристики класса «TExecuteObject»
Класс TExecuteObject выполняет команды SQL и является оболочкой к компоненту TIBQuery, который работает с семейством СУБД Borland IB. Свойства компонента TExecuteObject представлены в таблице 6.12.
Таблица 6.12
Свойства класса TExecuteObject
Название | Описание |
nfi[name: string]: Integer | Свойство доступа к полям набора данных. Используется, когда поле является целочисленным. |
nfs[name: string]: string | Свойство доступа к полям набора данных. Используется, когда поле является строковым. |
nff[name: string]: Extended | Свойство доступа к полям набора данных. Используется, когда поле является дробным. |
Методы класса TExecuteObject представлены в таблице 6.13.
Таблица 6.13
Методы класса TExecuteObject
Название | Описание |
ExecuteQuery(sql: string; params: array of variant) | Метод, выполняющий запрос к базе данным не возвращающий набора данных. |
SelectQuery(sql: string; params: array of variant; FetchAll: boolean=false) | Метод, выполняющий запрос к базе данным возвращающий набор данных. |
SelectStrings(sql: string; params: array of variant): TStringList | Метод, выполняющий запрос к базе данных и возвращающий коллекцию строк в классе TStringList из первого поля запроса |
Структура БД
В рассматриваемом в лабораторной работе примере будет использоваться база данных, чья реляционная модель приведена на рисунке 6.3.
Рисунок 6.3 Структура базы данных выдачи книг в библиотеке
Описание таблиц базы данных приведено в таблице 6.14.
Таблица 6.14
Описание таблиц базы данных