Настройка источников данных
Библиотека autumn-data
поддерживает работу с множественными источниками данных через конфигурацию в рамках autumn framework.
Основные понятия
Источник данных
Источник данных определяет подключение к конкретной базе данных. Каждый источник данных имеет:
- Имя - уникальный идентификатор источника
- Тип коннектора - класс коннектора для подключения к БД
- Строку соединения - параметры подключения к БД
- Параметры коннектора - дополнительные параметры
Менеджер сущностей
Менеджер сущностей управляет моделью данных для конкретного источника данных и предоставляет хранилища сущностей.
Конфигурация одного источника данных
Как json
{
"data": {
"ИсточникиДанных": {
"Основной": {
"ТипКоннектора": "КоннекторSqlite",
"СтрокаСоединения": "Data Source=database.db"
}
}
}
}
При такой конфигурации создается источник данных "Основной", и все хранилища будут использовать его по умолчанию. Дополнительно хранилища и менеджер сущностей будут доступны без указания имени источника данных.
Как массив с одним элементом
Детальки = Новый Соответствие();
СекцияData = Новый Соответствие();
Детальки.Вставить("data", СекцияData);
ИсточникиДанных = Новый Соответствие();
СекцияData.Вставить("ИсточникиДанных", ИсточникиДанных);
ИсточникиДанных.Вставить("ТипКоннектора", "КоннекторSQLite");
ИсточникиДанных.Вставить("СтрокаСоединения", "Data Source=database.db");
СоветДругогоМастера = Новый СоветДругогоМастера();
СоветДругогоМастера.ЗначенияДеталек(Детальки);
Поделка = Новый Поделка(СоветДругогоМастера);
Поделка.ЗапуститьПриложение();
При такой конфигурации создается источник данных "Основной", и все хранилища будут использовать его по умолчанию. Дополнительно хранилища и менеджер сущностей будут доступны без указания имени источника данных.
Как соответствие
Детальки = Новый Соответствие();
СекцияData = Новый Соответствие();
Детальки.Вставить("data", СекцияData);
ИсточникиДанных = Новый Соответствие();
СекцияData.Вставить("ИсточникиДанных", ИсточникиДанных);
ИсточникиДанных.Вставить("Имя", "МойИсточник");
ИсточникиДанных.Вставить("ТипКоннектора", "КоннекторInMemory");
СоветДругогоМастера = Новый СоветДругогоМастера();
СоветДругогоМастера.ЗначенияДеталек(Детальки);
Поделка = Новый Поделка(СоветДругогоМастера);
Поделка.ЗапуститьПриложение();
При такой конфигурации создается источник данных "МойИсточник". При обращении к хранилищам сущностей, менеджеру сущностей и в описаниях сущностей нужно будет явно указывать имя источника данных.
Конфигурация множественных источников данных
Как json
{
"data": {
"ИсточникиДанных": [
"Основной": {
"ТипКоннектора": "КоннекторSQLite",
"СтрокаСоединения": "Data Source=main.db"
},
"Дополнительный": {
"ТипКоннектора": "КоннекторPostgreSQL",
"СтрокаСоединения": "Host=localhost;Database=testdb;Username=user;Password=pass"
}
]
}
}
Как массив с несколькими элементами
Детальки = Новый Соответствие();
СекцияData = Новый Соответствие();
Детальки.Вставить("data", СекцияData);
ИсточникиДанных = Новый Массив();
СекцияData.Вставить("ИсточникиДанных", ИсточникиДанных);
ИсточникДанных = Новый Соответствие();
ИсточникДанных.Вставить("Имя", "Основной");
ИсточникДанных.Вставить("ТипКоннектора", "КоннекторInMemory");
ИсточникиДанных.Добавить(ИсточникДанных);
ИсточникДанных = Новый Соответствие();
ИсточникДанных.Вставить("Имя", "Дополнительный");
ИсточникДанных.Вставить("ТипКоннектора", "КоннекторSQLite");
ИсточникДанных.Вставить("СтрокаСоединения", "FullUri=file::memory:?cache=shared");
ИсточникиДанных.Добавить(ИсточникДанных);
СоветДругогоМастера = Новый СоветДругогоМастера();
СоветДругогоМастера.ЗначенияДеталек(Детальки);
Поделка = Новый Поделка(СоветДругогоМастера);
Поделка.ЗапуститьПриложение();
При задании нескольких источников данных кодом доступен только вариант с массивом.
Указание источника данных для сущности
Если используется только один источник данных без явного указания имени, то по умолчанию сущности будут использовать его. Для указания конкретного источника в режиме работы с несколькими источниками данных используйте параметр ИсточникДанных
в аннотации &Сущность
:
// Использует единственный источник данных
&Сущность(ИмяТаблицы = "Пользователи")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
// Использует явно указанный дополнительный источник данных
&Сущность(ИмяТаблицы = "Документы", ИсточникДанных = "Дополнительный")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Указание источника данных для хранилища сущностей
Аналогично для хранилищ сущностей:
// Хранилище для единственного источника данных
&ХранилищеСущностей("Пользователь")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
// Хранилище для дополнительного источника данных
&ХранилищеСущностей("Документ", ИсточникДанных = "Дополнительный")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Получение хранилищ из контейнера
При использовании множественных источников данных хранилища регистрируются в контейнере с составными именами:
// Для основного источника
ХранилищеПользователей = Поделка.НайтиЖелудь("ХранилищеСущностейОсновнойПользователь");
// Для дополнительного источника
ХранилищеДокументов = Поделка.НайтиЖелудь("ХранилищеСущностейДополнительныйДокумент");
// Также можно использовать прозвища
ХранилищеПользователей = Поделка.НайтиЖелудь("ХранилищеСущностейОсновной");
ХранилищеДокументов = Поделка.НайтиЖелудь("ХранилищеСущностейДополнительный");
Поддерживаемые типы коннекторов
Библиотека поддерживает все коннекторы из библиотеки entity
:
КоннекторSQLite
КоннекторPostgreSQL
КоннекторJSON
КоннекторInMemory
(для тестирования)- И другие коннекторы, поддерживаемые entity
Параметры коннектора
Некоторые коннекторы могут требовать дополнительные параметры, которые передаются через массив ПараметрыКоннектора
:
{
"data": {
"ИсточникиДанных": {
"Дополнительный": {
"ТипКоннектора": "КоннекторPostgreSQL",
"СтрокаСоединения": "Host=localhost;Database=testdb",
"ПараметрыКоннектора": [
"дополнительный_параметр"
]
}
}
}
}
Детальки = Новый Соответствие();
СекцияData = Новый Соответствие();
Детальки.Вставить("data", СекцияData);
ИсточникиДанных = Новый Соответствие();
СекцияData.Вставить("ИсточникиДанных", ИсточникиДанных);
ИсточникиДанных.Вставить("ТипКоннектора", "КоннекторSQLite");
ИсточникиДанных.Вставить("СтрокаСоединения", "Data Source=database.db");
ПараметрыКоннектора = Новый Массив();
ПараметрыКоннектора.Добавить("дополнительный_параметр");
ИсточникиДанных.Вставить("ПараметрыКоннектора", ПараметрыКоннектора);
СоветДругогоМастера = Новый СоветДругогоМастера();
СоветДругогоМастера.ЗначенияДеталек(Детальки);
Поделка = Новый Поделка(СоветДругогоМастера);
Поделка.ЗапуститьПриложение();