Генерация модели по базе данных

Studio позволяет создавать модель данных и стандартные экраны пользовательского интерфейса для существующей базы данных.

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

Щелкните правой кнопкой мыши элемент хранилища данных в Окне инструментов Jmix и выберите Generate Model from Database в контекстном меню.

generate data model item

Затем Studio откроет мастер Generate Model from Database.

Шаг 1

Это первый шаг мастера создания модели. Нажмите Refresh List.

Мастер отображает список таблиц, для которых нет соответствующих сущностей в модели данных проекта. Вы можете использовать поле фильтра выше, чтобы найти таблицу по ее имени.

generate data model step1

Выберите таблицы, которые вы хотите сопоставить с моделью данных. Некоторые таблицы зависят от других через внешние ключи, поэтому при выборе таблицы все другие, от которых она зависит, также будут выбраны. Если вы отмените выбор такой таблицы, выбор всех зависимых таблиц также будут отменен.

Вы можете установить флажки Select All и Deselect All для выбора или отмены выбора всех доступных таблиц.

Необязательный шаг: нажмите Settings, чтобы настроить пакет Java, в котором будут создаваться новые сущности и сопоставления по умолчанию для системных атрибутов.

Например, если все или большинство таблиц в вашей базе данных содержат колонки Modified и ModifiedBy, вы можете сопоставить их с атрибутами lastModifiedDate и lastModifiedBy созданных сущностей. В этом случае вам не нужно сопоставлять их отдельно для каждой таблицы. Используйте список Exclude columns from mapping, чтобы не сопоставлять определенные колонки автоматически для всех таблиц.

Нажмите Next.

Шаг 2

На этом шаге вы можете просмотреть и отредактировать автоматически сгенерированные сопоставления для выбранных таблиц.

generate data model step2

Столбец Status описывает результат автоматического сопоставления:

  • OK - автоматическое сопоставление выполнено успешно, и все столбцы сопоставлены с новой сущностью.

  • Join table - связь между сущностями распознана и сопоставлена как таблица соединения "многие-ко-многим".

  • Composite key - Jmix Studio создает сущность, которая является составным ключом.

  • Composite PK will be replaced - таблица имеет составной первичный ключ, но никакие другие таблицы не ссылаются на него. Составной ПК будет заменен первичным ключом типа UUID.

  • New PK will be created - у таблицы нет первичного ключа. Будет создан новый ПК типа UUID.

  • PK is an identity field - в таблице есть первичный ключ, который является полем идентификации. Его значения управляются сервером и обычно не могут быть изменены.

  • There are unmapped columns - некоторые колонки не могут быть сопоставлены с новым объектом.

  • Composite PK referenced by other tables - таблица имеет составной первичный ключ, и некоторые таблицы ссылаются на него. Studio не может сопоставить такую таблицу.

  • Choose primary key for DB view - это представление базы данных, и вы должны выбрать колонку или набор колонок, подходящих для идентификатора сущности. В этом случае нажмите кнопку Choose PK и выберите колонки для первичного ключа.

  • Unsupported PK type - в таблице есть первичный ключ неподдерживаемого типа. Studio не может сопоставить такую таблицу.

Кнопка Refresh mapping button позволяет повторно запустить автоматическое сопоставление для выбранной таблицы. Например, вы можете перейти к инструменту SQL базы данных, внести некоторые изменения в схему базы данных, затем вернуться к мастеру и снова запустить процедуру сопоставления.

Кнопка Edit mapping открывает диалоговое окно с деталями сопоставления. Там вы можете изменить имя сущности и список системных интерфейсов, реализуемых классом сущности. Это повлияет на количество создаваемых системных колонок для совместимости с сущностями Jmix.

table mapping editor

Кнопка Choose PK появляется вместо Edit mapping, когда выбрано представление базы данных, и нужно выбрать колонки для идентификатора сущности.

Нажав Back, вы можете вернуться к предыдущему шагу, чтобы выбрать или отменить выбор таблиц.

Нажмите Next, чтобы перейти к следующему шагу.

Шаг 3

На этом шаге вы можете указать, какие экраны UI должны быть созданы для новых сущностей.

generate data model step3

Если снять флажок Create standard view, Studio не будет генерировать UI для новых сущностей.

Используйте поля In module, Package, и Menu, чтобы указать, где размещать исходный код экранов и где отображать их в главном меню.

Используйте выпадающий список в колонке Standard views, чтобы выбрать типы экранов для создания.

Вы можете спокойно пропустить этот шаг и создать экраны UI для сущностей позже, после завершения процесса создания модели.

Щелкните Create. Studio начнет генерировать сущности и экраны.

Когда Studio создает сущности на основе определений их таблиц, она помечает сущности аннотацией @DdlGeneration(value = DdlGeneration.DbScriptGenerationMode.DISABLED). Это означает, что файлы changelog Liquibase не будут создаваться для таких сущностей. Чтобы включить генерацию скрипта Liquibase для импортированных сущностей, можно просто удалить эту аннотацию (или изменить соответствующую настройку в дизайнере сущностей).