Хранилища данных

Основное хранилище данных создается одновременно с приложением Jmix и доступно из Окна инструментов Jmix.

data tree

Двойным щелчком мыши можно открыть диалоговое окно свойств хранилища данных. По умолчанию в качестве типа базы данных задан HSQLDB.

data properties

Следующие свойства доступны как для основного, так и для дополнительных хранилищ данных:

  • Database type – тип сервера базы данных. Вы можете выбрать одну из доступных баз данных из списка.

  • Database URL – хост, порт и имя базы данных.

    • Connection params – другие параметры подключения. Формат параметров подключения зависит от выбранной СУБД. Строка должна содержать разделитель между именем базы данных и параметрами. Вы можете использовать кнопку карандаша в правой части поля Connection params для большего удобства ввода параметров подключения. Тогда Studio автоматически сформирует строку подключения, добавляя символы-разделители, специфичные для СУБД.

      data params
    • Show raw URL – показывает параметры подключения в виде URL.

    • Integrated Security – включает соответствующую опцию проверки подлинности при подключении к базе данных Microsoft SQL Server 2012+.

  • Database user и Password – учетные данные для подключения к базе данных.

Если вы используете конфигурационные файлы, специфичные для профиля, редактор свойств хранилища данных будет считывать и записывать свойства в профиль и из него, а не из application.properties.

Вы можете использовать плейсхолдеры типа ${VAR:default_value}, где VAR – это переменная окружения для установки свойств базы данных.

data vars

Studio подменяет плейсхолдеры и использует полученные значения для всех операций с базой данных: тестовое подключение, воссоздание, обновление, Liquibase diff и т.д.

Раздел Supported DB Types содержит опцию Enable support for several DB types. Если эта опция активна, вы можете выбрать несколько поддерживаемых баз данных. Studio сгенерирует один набор скриптов миграции Liquibase, поддерживающих все выбранные типы баз данных.

Раздел Database Identifiers Length Mode позволяет выбрать один из трех доступных режимов:

  • Oracle - максимальная длина таблиц, столбцов, индексов, других имен не более 30 символов.

  • Postgres - максимальная длина таблиц, столбцов, индексов, других имен не более 64 символов.

  • Unlimited - неограниченная длина таблиц, столбцов, индексов, других имен.

Дополнительное хранилище данных

Чтобы создать дополнительное хранилище данных, используйте действие из контекстного меню. Либо можно выбрать действие в разделе Advanced:

data advanced

См. описание свойств базы данных, общих как для основного, так и для дополнительных хранилищ данных, приведенное выше.

data schema

Укажите для дополнительного хранилища данных имя в Data store name и выберите опцию в разделе DB Schema Management:

  • Disabled – Studio не отслеживает изменения схемы базы данных для этого хранилища данных. Это режим по умолчанию.

  • Update Only – предоставляет действие обновления и создает файлы Liquibase changelog.

  • Create and Update – предоставляет действия обновления и воссоздания, а также создает скрипты Liquibase.

Подключение к неподдерживаемым базам данных

Вы можете определить дополнительное хранилище данных, подключенное к базе данных, которую Jmix не поддерживает нативно.

Эта функция в настоящее время находится в состоянии предварительной версии и отключена по умолчанию. Чтобы включить ее, дважды нажмите клавишу Shift, в открывшемся списке выберите пункт Jmix Features и установите флажок Generic Database Support for Additional Data Store.

После этого при создании дополнительного хранилища данных вы увидите пункт Generic DB в выпадающем списке Database type. Если выбрать этот тип, Studio позволит ввести следующие параметры:

  • DBMS type - произвольный идентификатор типа базы данных, используемый также как префикс для классов, специфичных для базы данных (см. ниже). Введите короткую строку, содержащую только буквенно-цифровые символы в нижнем регистре, например, foo.

  • Database URL - полный JDBC URL подключения, например, jdbc:foosql://localhost/database.

  • Driver class name - имя класса драйвера JDBC, например, org.foosql.Driver.

  • Driver artifact - координаты артефакта драйвера JDBC, например, org.foosql:foosql:1.0.0.

  • Connection test query - SQL-запрос для проверки соединения, например, select 1.

  • Database platform - класс, расширяющий org.eclipse.persistence.platform.database.DatabasePlatform и описывающий базу данных для фреймворка EclipseLink ORM. Вы можете выбрать существующий класс, если он подходит для вашей базы данных, или оставить Create DatabasePlatform class, чтобы создать новый класс.

data store unsupported

Нажмите OK.

Studio, как обычно, создаст класс Myds1StoreConfiguration с необходимыми бинами в базовом пакете проекта. Кроме того, она создаст следующие заглушки в пакете <base-package>/dbms package:

  • FooPlatform - класс, расширяющий DatabasePlatform. Он описывает базу данных для фреймворка EclipseLink ORM.

  • FooDbmsFeatures - класс, реализующий интерфейс DbmsFeatures. Он описывает базу данных для фреймворка Jmix.

  • FooSequenceSupport - класс, реализующий интерфейс SequenceSupport. Он описывает, как должны обрабатываться последовательности в этой базе данных.

  • FooDbTypeConverter - класс, реализующий интерфейс DbTypeConverter. Он определяет методы для преобразования данных между объектами Java и параметрами и результатами JDBC.

Studio также добавит зависимость org.foosql:foosql:1.0.0 в файл build.gradle.

Теперь вам необходимо реализовать методы в соответствующих классах-заглушках. Воспользуйтесь в качестве примера классами фреймворка, такими как JmixPostgreSQLPlatform, PostgresqlDbmsFeatures и прочими.

Действия с хранилищем данных

Щелкнув правой кнопкой мыши элемент хранилища данных в дереве проекта Jmix, вы можете открыть его контекстное меню:

data actions

Количество действий, отображаемых в меню, зависит от типа хранилища данных и режима управления схемой БД.

  • New → Additional Data Store – открывает диалоговое окно для создания нового хранилища данных.

  • New → Liquibase Changelog – генерирует новый файл changelog с корректным именем.

  • Manage Data Store – открывает диалоговое окно для редактирования настроек хранилища данных.

  • Delete Data Store – удаляет хранилище данных вместе со всеми связанными файлами конфигурации и Liquibase changelogs.

  • Recreate – воссоздает базу данных, принадлежащую выбранному хранилищу данных. Применимо для основного хранилища данных и дополнительных хранилищ данных с режимом управления схемой Create and Update.

  • Update – обновляет схему базы данных для выбранного хранилища данных. Применимо для основного хранилища данных и дополнительных хранилищ данных с режимами управления схемой Update Only и Create and Update.

  • Generate Liquibase Changelog – генерирует файлы changelog для выбранного хранилища данных путем сравнения модели данных со схемой базы данных. Применимо для основного хранилища данных и дополнительных хранилищ данных с режимами управления схемой Update Only и Create and Update.

    Эта функция свободно доступна для использования в небольших проектах с количеством сущностей и ролей до 10. В более крупных проектах она требует RAD или Enterprise подписки подписку.

  • Check Liquibase Changelog Includes – проверяет, соответствуют ли включения в корневом файле changelog дополнениям, используемым в проекте. Если есть несоответствие, Studio показывает диалоговое окно уведомления и предлагает добавить или удалить включения.

  • Aggregate Liquibase Changelogs - позволяет объединить несколько последних файлов изменений (changelog) в один, избегая дублирования действий в наборах изменений (changesets).

    Эта функция может быть использована разработчиками перед каждым коммитом изменений в общий репозиторий кода. Она помогает поддерживать аккуратную коллекцию файлов changelog и сокращает время запуска приложения за счет меньшего числа наборов изменений.

    Действие Aggregate Liquibase Changelogs запускает мастер, который позволяет разработчику настроить объединенный файл изменений (changelog).

  • Generate Model from Databaseгенерирует модель данных из базы данных.

  • Jump to Source – открывает класс конфигурации Spring.