Дизайнер сущностей
Studio предоставляет визуальный дизайнер для упрощенного создания сущностей, поэтому вам не нужно запоминать все правила и аннотации.
Эта функция свободно доступна для использования в небольших проектах с количеством сущностей и ролей до 10. В более крупных проектах она требует RAD или Enterprise подписки подписку. |
Дизайнер сущностей JPA
Чтобы создать сущность, используйте меню в Окне инструментов Jmix.
Появится диалог New JPA Entity.
Заполните следующие поля:
-
Class - имя нового класса. Оно должно соответствовать требованиям к именам Java.
-
Package - пакет, в котором будет находиться класс. Значение по умолчанию автоматически отображается в поле. Вы можете изменить его, и Studio создаст пакет после нажатия OK.
-
Entity type - выберите тип сущности:
-
Entity - класс для сущности модели данных.
-
MappedSuperclass - базовый суперкласс, который не связан ни с какой конкретной таблицей базы данных. Такой класс сущностей аннотируется @MappedSuperclass.
-
Embeddable - встраиваемая персистентная сущность. Такой класс сущности аннотируется
@Embeddable
.
-
-
Parent - класс, от которого будет наследовать ваш новый класс.
-
Id type - выберите тип первичного ключа объекта:
-
UUID
- идентификатор типаUUID
. -
Long
- идентификатор типаLong
. Настоятельно рекомендуется добавить черту UUID, поскольку она обеспечивает дополнительную оптимизацию и позволяет однозначно идентифицировать ваши экземпляры в распределенной среде. -
Integer
- идентификатор типаInteger
. Настоятельно рекомендуется добавить черту UUID, поскольку она обеспечивает дополнительную оптимизацию и позволяет однозначно идентифицировать ваши экземпляры в распределенной среде. -
String
- идентификатор типаString
. Настоятельно рекомендуется добавить черту UUID, поскольку она обеспечивает дополнительную оптимизацию и позволяет однозначно идентифицировать ваши экземпляры в распределенной среде. Конкретный класс сущностей должен иметь строгое поле, аннотированное аннотацией JPA@Id
. -
Embedded
- первичный ключ является составным ключом. В этом случае конкретный класс сущностей имеет поле встраиваемого типа, представляющее ключ, аннотированное JPA@EmbeddedId
.
-
-
Id value - в случае типа идентификатора
UUID
это поле включено и имеет значение Generated By Jmix. В общем случае выпадающий список Id value имеет следующие значения:-
Generated By Jmix. Идентификатор сущности аннотирован @JmixGeneratedValue.
-
Identity column подходит только для типов идентификаторов
Integer
иLong
. Идентификатор сущности имеет аннотацию JPA@GeneratedValue
со стратегиейGenerationType.IDENTITY
. Значение столбца Identity column используется для автоматически увеличиваемых идентификаторов. Настоятельно рекомендуется добавить черту UUID, поскольку она обеспечивает дополнительную оптимизацию и позволяет однозначно идентифицировать ваши экземпляры в распределенной среде. -
Assigned by user - идентификатор устанавливается пользователем. Подходит для типов идентификаторов
Integer
,Long
,String
, иEmbedded
.
-
-
Id length отображается, если выбран тип идентификатора
String
. Укажите максимальное количество символов. Значение по умолчанию –255
. -
Composite id type отображается, если выбран тип идентификатора
Embedded
Выберите встраиваемую сущность, представляющую собой составной ключ. -
В группе флажков Traits выберите необходимые черты.
Затем нажмите OK.
Studio отображает в редакторе три вкладки. Вместе они образуют визуальный Дизайнер сущностей:
-
Text содержит исходный код сущности.
-
Designer показывает структуру сущности. Вы можете добавлять атрибуты сущности, задавать имя экземпляра, стратегию наследования и валидацию с помощью графического интерфейса вместо написания кода Java.
-
Indexes отображает индексы и позволяет создавать новые.
Панель действий
Панель действий расположена в верхней части дизайнера сущностей. Она предоставляет доступ к следующим действиям:
-
Views - переходит к существующим экранам или создает новые экраны для текущей сущности.
-
Event Listeners - переходит к существующим слушателям событий или создает новый для текущей сущности:
-
Lifecycle Callbacks - добавляет заглушки методов обратных вызовов жизненного цикла:
Вкладка Designer
Вкладка Designer показывает структуру сущности:
В дополнение к полям, описанным в диалоговом окне Дизайнера сущностей JPA, вкладка Designer содержит следующие поля:
-
Выпадающий список Instance name.
-
Флажок DB view. Используя этот флажок, вы можете сопоставить сущность JPA с представлением базы данных. Такой класс сущностей аннотируется @DbView.
-
Кнопка-ссылка DDL Generation Settings открывает визуальный конструктор значения аннотации @DdlGeneration:
-
Кнопка-ссылка Traits открывает диалоговое окно, содержащее черты:
-
В выпадающем списке Inheritance вы можете выбрать стратегию наследования.
-
С помощью редактируемой ссылки Comment вы можете добавлять комментарии к сущности.
Панель Attributes содержит действия для управления атрибутами сущности:
-
Кнопка Add () открывает диалоговое окно New Attribute.
-
Нажмите кнопку Copy (), чтобы создать копию существующего атрибута.
-
Кнопка Add to Views () открывает диалоговое окно со всеми экранами, отображающими текущую сущность. Выберите экраны, на которых будет отображаться выбранный атрибут.
-
Нажмите кнопку Remove (), чтобы удалить выбранный атрибут.
-
Используйте кнопки Up () / Down (), чтобы изменить порядок атрибутов.
На правой панели дизайнера сущностей отображаются свойства выбранного атрибута:
-
Используйте кнопку глобуса () рядом с полем Name, чтобы задать удобное для пользователей имя атрибута.
-
Выпадающие списки Attribute type и Type позволяют выбрать тип атрибута сущности.
-
С помощью редактируемой ссылки Comment вы можете добавлять комментарии к атрибуту сущности.
Панель Validation используется для определения ограничений Bean Validation. Нажмите на кнопку-ссылкe рядом с выбранным ограничением. Откроется редактор ограничений:
Вкладка Text
На вкладке Text вы можете увидеть результирующий класс сущностей, созданный дизайнером.
Если у вас есть опыт работы с JPA, вы увидите знакомые аннотации: @Entity
, @Table
, @Column
и т.д. Есть также несколько аннотаций, специфичных для Jmix. Наиболее важной из них является @JmixEntity в заголовке класса. В целом, любой POJO может быть сущностью в Jmix, если аннотирован @JmixEntity
.
Класс сущности можно редактировать вручную, и если вернуться на вкладку Designer, в ней будут отражены изменения. Например, если вы удалите nullable = false
и @NotNull
из атрибута, дизайнер снимет для него флажок Mandatory.
Панель действий расположена в верхней части редактора исходного кода. Следующие действия добавляются к описанным выше:
-
Add Attribute - открывает диалоговое окно New Attribute.
-
Add Attributes to Views - открывает диалоговое окно Add Attributes to Views со всеми экранами, отображающими текущую сущность. Выберите атрибуты, которые должны быть добавлены к экранам.
Вкладка Indexes
Вкладка Indexes используется для определения уникальных индексов.
Чтобы создать новый индекс, нажмите кнопку New Index () на панели инструментов Database Indexes. Studio добавит строку в список индексов.
Выберите атрибут сущности или набор атрибутов в списке Available attributes и щелкните по стрелке , чтобы переместить его в Selected attributes.
Установите флажки Unique и/или Constraint в строке индекса.
Добавление атрибутов
Вы можете добавить атрибут, нажав кнопку Add () на вкладке Designer, и настроить его в появившемся диалоговом окне. В приведенном ниже примере добавлен атрибут addresses
с ASSOCIATION
в поле Attribute type. В этом случае для ссылки "один-ко-многим" необходимо создать обратный атрибут в сущности Address
.
Кнопка со значком глобуса в правой части поля Name позволяет сразу же задать удобное для пользователя имя атрибута. Оно хранится в файле messages.properties
и используется по умолчанию в компонентах UI.
Кроме того, вы можете вызвать диалоговое окно создания атрибута на вкладке Text, нажав кнопку Add Attribute на верхней панели или во всплывающем окне Generate.
Создание имени экземпляра
Studio автоматически задает имя экземпляра для сущности, когда к ней добавляется атрибут с одним из следующих имен: name
, title
, caption
, label
, summary
, description
, firstName
, lastName
, middleName
.
Если вы хотите задать другие атрибуты для генерации имени экземпляра, используйте визуальный конструктор. Его можно открыть нажав кнопку со значком карандаша в поле Instance name.
Имя экземпляра также можно создать на вкладке Text. Наведите курсор на имя класса, нажмите Alt+Enter (⌥↩) и выберите Add instance name.
Дизайнер сущностей DTO
Чтобы создать сущность DTO, нажмите New () → DTO Entity в Jmix Tool Window. Появится диалоговое окно New DTO Entity.
Отображаемые поля аналогичны полям сущности JPA. Заполните их и нажмите OK.
Studio отображает две вкладки для созданной сущности.
-
Text содержит исходный код сущности DTO.
-
Designer показывает структуру сущности.
Перечисления
Studio помогает работать с перечислениями, предоставляя набор действий и визуальный конструктор. Чтобы создать перечисление, нажмите New () → Enumeration в окне инструментов Jmix.
После создания перечисления его класс будет открыт в редакторе с двумя вкладками.
-
Text содержит исходный код.
-
Designer показывает дизайнер перечислений, в котором вы можете настроить перечисление и его значения с помощью графического интерфейса вместо написания кода Java.
Используйте таблицу Values и связанные с ней кнопки для настройки констант перечисления.
-
Колонка Name позволяет ввести имя константы перечисления, которое будет использоваться в коде. Его можно переименовать позже, не затрагивая существующие данные в базе данных.
-
Колонка Value позволяет ввести идентификатор константы перечисления. Это фактическое значение, хранящееся в базе данных.
Кнопка глобуса позволяет задать локализованные надписи для выбранной константы перечисления.
Дизайнер также предоставляет возможность изменять тип идентификатора, используемый перечислением, со String
на Integer
и наоборот. Studio мигрирует используемые перечисления в коде. После этого вам нужно изменить значения существующих констант перечисления.
Такая миграция не переносит значения перечисления, уже сохраненные в таблицах базы данных; вам будет нужно реализовать такую миграцию самостоятельно. |