Skip to content

ЗаготовкаОсеньДата ​

Основной класс-конфигуратор библиотеки autumn-data, отвечающий за инициализацию источников данных, менеджеров сущностей и хранилищ в контейнере зависимостей autumn.

Назначение ​

Класс ЗаготовкаОсеньДата выполняет следующие функции:

  1. Инициализирует источники данных на основе конфигурации
  2. Создает менеджеры сущностей для каждого источника данных
  3. Регистрирует хранилища сущностей в контейнере зависимостей
  4. Настраивает связи между компонентами системы

Аннотации ​

bsl
&Заготовка

Класс помечен аннотацией &Заготовка, что означает его использование для конфигурации контейнера зависимостей в рамках autumn framework.

Конструктор ​

bsl
Процедура ПриСозданииОбъекта(&Деталька("data.ИсточникиДанных") НастройкиИсточниковДанных)

Параметры ​

НастройкиИсточниковДанных ​

Тип: Соответствие или Массив

Конфигурация источников данных. Может быть передана в двух форматах:

Как соответствие (один источник без имени):

bsl
Новый Соответствие()
    .Вставить("ТипКоннектора", "КоннекторSqlite")
    .Вставить("СтрокаСоединения", "Data Source=database.db")

Как массив (множественные источники):

bsl
Новый Массив()
    .Добавить(Новый Соответствие()
        .Вставить("Имя", "Основной")
        .Вставить("ТипКоннектора", "КоннекторSqlite")
        .Вставить("СтрокаСоединения", "Data Source=main.db")
    )
    .Добавить(Новый Соответствие()
        .Вставить("Имя", "Дополнительный")
        .Вставить("ТипКоннектора", "КоннекторPostgreSQL")
        .Вставить("СтрокаСоединения", "Host=localhost;Database=archive")
    )

Структура настроек источника данных ​

Каждый источник данных описывается соответствием со следующими ключами:

Обязательные параметры ​

  • ТипКоннектора - строка с именем класса коннектора (например, "КоннекторSqlite")

Опциональные параметры ​

  • Имя - уникальное имя источника данных (обязательно для множественных источников)
  • СтрокаСоединения - строка подключения к базе данных (по умолчанию пустая строка)
  • ПараметрыКоннектора - массив дополнительных параметров для коннектора (по умолчанию пустой массив)
  • РазмерПула - предел одновременных соединений с БД (по умолчанию 10; 0 отключает переиспользование: каждое обращение открывает свое соединение и закрывает его по завершении)

Процесс инициализации ​

1. Инициализация источников данных ​

Метод ИнициализироватьИсточникиДанных() создает объекты источников данных на основе переданной конфигурации.

2. Определение типов сущностей ​

Система автоматически находит все пользовательские типы, содержащие методы с аннотацией &Сущность.

3. Регистрация компонентов ​

Для каждого источника данных регистрируются:

  • ИсточникДанных - объект источника данных
  • МенеджерСущностей - менеджер для работы с сущностями
  • ХранилищеСущностей - хранилища для каждого типа сущности

4. Регистрация наблюдателей источника данных ​

Завязь менеджера получает все желуди с прозвищем НаблюдательИсточникаДанных (&Пластилин("НаблюдательИсточникаДанных", Тип = "Массив")) и регистрирует каждый на источнике данных методом ИсточникДанных.ДобавитьНаблюдателя до создания менеджера, поэтому наблюдатели видят и создание таблиц. Менеджер создается из источника: Новый МенеджерСущностей(ИсточникДанных).

Именование компонентов в контейнере ​

Источники данных ​

  • С именем: "ИсточникДанных" + ИмяИсточника
  • Без имени: "ИсточникДанных"

Менеджеры сущностей ​

  • С именем: "МенеджерСущностей" + ИмяИсточника
  • Без имени: "МенеджерСущностей"

Хранилища сущностей ​

  • С именем источника: "ХранилищеСущностей" + ИмяИсточника + ИмяТипаСущности
  • Без имени источника: "ХранилищеСущностей" + ИмяТипаСущности

Прозвища ​

Дополнительно регистрируются прозвища для удобного доступа:

  • "ИсточникДанных" - для основного источника
  • "МенеджерСущностей" - для основного менеджера
  • "ХранилищеСущностей" - для основного хранилища
  • "ХранилищеСущностей" + ИмяИсточника - для хранилищ конкретного источника

Примеры использования ​

Простая конфигурация ​

bsl
// В конфигурации приложения
СоветДругогоМастера = Новый СоветДругогоМастера()
    .Деталька("data.ИсточникиДанных", Новый Соответствие()
        .Вставить("ТипКоннектора", "КоннекторSqlite")
        .Вставить("СтрокаСоединения", "Data Source=app.db")
    );

Поделка = Новый Поделка(СоветДругогоМастера);
Поделка.ЗапуститьПриложение();

// Получение компонентов
ИсточникДанных = Поделка.НайтиЖелудь("ИсточникДанных");
МенеджерСущностей = Поделка.НайтиЖелудь("МенеджерСущностей");
ХранилищеПользователей = Поделка.НайтиЖелудь("ХранилищеСущностейПользователь");

Множественные источники данных ​

bsl
// В конфигурации приложения
СоветДругогоМастера = Новый СоветДругогоМастера()
    .Деталька("data.ИсточникиДанных", Новый Массив()
        .Добавить(Новый Соответствие()
            .Вставить("Имя", "Основной")
            .Вставить("ТипКоннектора", "КоннекторSqlite")
            .Вставить("СтрокаСоединения", "Data Source=main.db")
        )
        .Добавить(Новый Соответствие()
            .Вставить("Имя", "Архивный")
            .Вставить("ТипКоннектора", "КоннекторPostgreSQL")
            .Вставить("СтрокаСоединения", "Host=archive.local;Database=archive")
        )
    );

Поделка = Новый Поделка(СоветДругогоМастера);
Поделка.ЗапуститьПриложение();

// Получение компонентов для разных источников
ОсновнойИсточник = Поделка.НайтиЖелудь("ИсточникДанныхОсновной");
АрхивныйИсточник = Поделка.НайтиЖелудь("ИсточникДанныхАрхивный");

ОсновнойМенеджер = Поделка.НайтиЖелудь("МенеджерСущностейОсновной");
АрхивныйМенеджер = Поделка.НайтиЖелудь("МенеджерСущностейАрхивный");

ХранилищеПользователей = Поделка.НайтиЖелудь("ХранилищеСущностейОсновнойПользователь");
ХранилищеАрхивныхДокументов = Поделка.НайтиЖелудь("ХранилищеСущностейАрхивныйДокумент");

Внутренние методы ​

ИнициализироватьИсточникиДанных() ​

Создает массив объектов ИсточникДанных на основе переданной конфигурации.

Возвращает: Массив объектов ИсточникДанных

ПолучитьИли(Соответствие, Ключ, ЗначениеПоУмолчанию) ​

Вспомогательный метод для извлечения значения из соответствия с возможностью указания значения по умолчанию.

Параметры:

  • Соответствие - источник данных
  • Ключ - ключ для поиска
  • ЗначениеПоУмолчанию - значение, возвращаемое если ключ не найден

Возвращает: Значение из соответствия или значение по умолчанию

ПриИнициализацииПоделки(Поделка) ​

Основной метод инициализации, вызываемый ОСенью, для конфигурации контейнера зависимостей.

См. также ​