Skip to content

Conversation

irinaponomarevahaulmont
Copy link
Contributor

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

Copy link
Contributor

@honest-niceman honest-niceman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По тексту в целом всё хорошо, нужно будет поменять картинки. Напишу об этом в тимс


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

![application-over-database.png](images/application-over-database.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Эта картинка не нужна

![how-to-add-dependency.png](images/how-to-add-dependency.png)

* Все остальные настройки оставьте по умолчанию
* Нажмите **GENERATE**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Примеры с цифрами можно посмотреть в этой статье: https://amplicode.ru/blog/sozdaem-crud-rest-api-v-spring-boot/


![click-generate.png](images/click-generate.png)

Теперь откройте сгенерированное приложение в IntelliJ IDEA. В момент первого открытия приложения Amplicode необходимо активировать.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Отсюда "В момент первого открытия приложения Amplicode необходимо активировать." и до "Настройка подключения к БД" уже не актуально. Надо удалить


![connection-parameters.png](images/connection-parameters.png)

* Благодаря действию **test connection** можно убедиться в корректности указанных параметров для источника данных.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Точно также, всё что происходит в одном диалоговом окне мы показываем на одном скриншоте с цифрами.


Также будет создано подключение к нашей базе данных.

![connection-has-been-created.png](images/connection-has-been-created.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Этот скрин не нужен


Заполнение формы на этом завершено и теперь необходимо просто нажать **OK**.

Все сущности будут сгенерированы Amplicode вместе с базовыми и ассоциативными атрибутами, а также индексом. Можно переходить к следующему шагу.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Давай добавим результат генерации


Диалоговое окно **JPA Entities from DB** предоставляет список таблиц, для которых уже есть сущности в проекте.

![list-of-tables.png](images/list-of-tables.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Обведено не то. Надо обводить секциб Mapped Relations и она должна быть раскрыта


Стоит отметить, что несмотря на то, что наши таблицы называются во множественном числе (`users`, `posts`), что является довольно распространенным подходом к именованию таблиц на уровне базы данных, на уровне JPA модели принято придерживаться именования в единственном числе.

```java
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Достаточно просто в предложении выше написать в скобках (User), пример класса думаю тут будет излишним


![migrate-indexes-and-constraints.png](images/migrate-indexes-and-constraints.png)

Последним шагом определите отдельный пакет для сущностей, введя его название в поле **Entity package**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вроде просто Package на картинке название поля


Все сущности будут сгенерированы Amplicode вместе с базовыми и ассоциативными атрибутами, а также индексом.

![generation-result.png](images/generation-result.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Картинка не отображается


Прекрасно понимая, что наше приложение со временем будет разрастаться, можно уже сейчас улучшить нашу JPA модель и подготовиться к расширению заранее. Например, идентификатор, а также все поля, связанные с аудитом, например, дата создания и последнего изменения, а также имя пользователя, выполнявшего это самое создание и изменение, будут нужны для подавляющего большинства сущностей.

![common-attributes.png](images/common-attributes.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Id и GeneratedValue тоже под обводку надо добавить. Эти аннотации относятся к id, мы их тоже будем выносить в базовый класс вместе с полем id


* Выберите опцию **Extract to MappedSuperClass**

![extract-to-mappedsuperclass-in-menu.png](images/extract-to-mappedsuperclass-in-menu.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Контекстные окна, вроде вот этого, лучше скринить в контексте того, где они вызваны. Иначе не совсем понятно, а где именно надо эту комбинацию клавиш вызывтаь

@Column(name = "last_modified_date")
private Instant lastModifiedDate;

public Long getId() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вместо геттеров и сеттеров давай напишем: //Геттеры и сеттеры опущены для краткости

@OneToMany(mappedBy = "author")
private Set<Post> posts = new LinkedHashSet<>();

public String getFirstName() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Аналогично тут с геттерами и сеттерами


Можно воспользоваться панелью Generate от IntelliJ IDEA. Для ее вызова следует нажать **Alt+Insert** для Widows/Linux или **⌘+N** для macOS.

![generate-panel-intellij-idea.png](images/generate-panel-intellij-idea.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тоже контекстное меню


![to-posts-checkbox-checked.png](images/to-posts-checkbox-checked.png)

Нажмите **OK**. Новая сущность и связь "многие ко многим" будут реализованы. Кроме того, новые атрибуты будут добавлены в уже существующую сущность без изменения ранее написанного кода.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Надо показать куда была добавлена связь многие ко многим ещё. Думаю, тут можно скрином, на котором обведём новые поля, чтобы весь код не дублировать.

@honest-niceman honest-niceman merged commit cbd3e29 into main Jan 23, 2025
@honest-niceman honest-niceman deleted the generate-entities-from-db branch March 27, 2025 11:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants