Генерация модели по базе данных
Studio позволяет создавать модель данных и стандартные экраны пользовательского интерфейса для существующей базы данных.
Во-первых, следует создать дополнительное хранилище данных или изменить основное хранилище данных так, чтобы оно указывало на существующую базу данных
Щелкните правой кнопкой мыши элемент хранилища данных в Окне инструментов Jmix и выберите Generate Model from Database в контекстном меню.
Затем Studio откроет мастер Generate Model from Database.
Мастер генерации модели из базы данных
- Шаг 1
-
Это первый шаг мастера создания модели. Нажмите Refresh List.
Мастер отображает список таблиц, для которых нет соответствующих сущностей в модели данных проекта. Вы можете использовать поле фильтра выше, чтобы найти таблицу по ее имени.
Выберите таблицы, которые вы хотите сопоставить с моделью данных. Некоторые таблицы зависят от других через внешние ключи, поэтому при выборе таблицы все другие, от которых она зависит, также будут выбраны. Если вы отмените выбор такой таблицы, выбор всех зависимых таблиц также будут отменен.
Вы можете установить флажки
и
для выбора или отмены выбора всех доступных таблиц.
Необязательный шаг: нажмите
, чтобы настроить пакет Java, в котором будут создаваться новые сущности и сопоставления по умолчанию для системных атрибутов.
Например, если все или большинство таблиц в вашей базе данных содержат колонки
ModifiedиModifiedBy, вы можете сопоставить их с атрибутамиlastModifiedDateиlastModifiedByсозданных сущностей. В этом случае вам не нужно сопоставлять их отдельно для каждой таблицы. Используйте список Exclude columns from mapping, чтобы не сопоставлять определенные колонки автоматически для всех таблиц.Нажмите Next.
- Шаг 2
-
На этом шаге вы можете просмотреть и отредактировать автоматически сгенерированные сопоставления для выбранных таблиц.
Столбец 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 не может сопоставить такую таблицу.
Кнопка
позволяет повторно запустить автоматическое сопоставление для выбранной таблицы. Например, вы можете перейти к инструменту SQL базы данных, внести некоторые изменения в схему базы данных, затем вернуться к мастеру и снова запустить процедуру сопоставления.
Кнопка
открывает диалоговое окно с деталями сопоставления. Там вы можете изменить имя сущности и список системных интерфейсов, реализуемых классом сущности. Это повлияет на количество создаваемых системных колонок для совместимости с сущностями Jmix.
Кнопка Choose PK появляется вместо
Edit mapping, когда выбрано представление базы данных, и нужно выбрать колонки для идентификатора сущности.Нажав Previous, вы можете вернуться к предыдущему шагу, чтобы выбрать или отменить выбор таблиц.
Нажмите Next, чтобы перейти к следующему шагу.
-
- Шаг 3
-
На этом шаге вы можете указать, какие экраны UI должны быть созданы для новых сущностей.
Если снять флажок Create standard views, Studio не будет генерировать UI для новых сущностей.
Используйте поля In module, Package, и Menu, чтобы указать, где размещать исходный код экранов и где отображать их в главном меню.
Используйте выпадающий список в колонке Standard views, чтобы выбрать типы экранов для создания.
Вы можете спокойно пропустить этот шаг и создать экраны UI для сущностей позже, после завершения процесса создания модели.
Щелкните Create. Studio начнет генерировать сущности и экраны.
Когда Studio создает сущности на основе определений их таблиц, она помечает сущности аннотацией @DdlGeneration(value = DdlGeneration.DbScriptGenerationMode.DISABLED). Это означает, что файлы changelog Liquibase не будут создаваться для таких сущностей. Чтобы включить генерацию скрипта Liquibase для импортированных сущностей, можно просто удалить эту аннотацию (или изменить соответствующую настройку в дизайнере сущностей).
Частичный реверс-инжиниринг
Эта функция позволяет генерировать атрибуты сущностей из схемы базы данных для уже сопоставленных сущностей. Это особенно полезно, когда разработчики сначала вносят изменения в схему базы данных, а затем необходимо синхронизировать модель данных и пользовательский интерфейс.
Jmix Studio может отслеживать изменения в базе данных и помогать распространять эти изменения в ваш код, сохраняя всю существующую пользовательскую логику.
После внесения изменений в таблицы базы данных вы можете сгенерировать отсутствующие атрибуты в вашей JPA-модели сущностей. Используйте один из следующих методов:
-
Нажмите
на панели Attributes в Entity Designer.
-
Нажмите кнопку Add attribute from DB на панели инструментов текстового редактора сущности.
Нажатие любой из этих кнопок открывает диалоговое окно Add Entity Attribute(s) from DB.
Таблица address уже выбрана в выпадающем списке Table/View.
В разделе Columns выберите новые атрибуты, которые вы хотите создать. Ячейки в таблице редактируемы, что позволяет:
-
Изменить имя атрибута.
-
Изменить тип сопоставления (например, указать тип перечисления).
-
Выбрать другой тип данных, если предложенный Studio не соответствует вашим требованиям.
Нажмите OK. Новые атрибуты будут добавлены в существующую сущность Address без изменения любого ранее написанного кода.