You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: flyway-and-spring-boot/text-based-guide/flyway-and-spring-boot.md
+10-42Lines changed: 10 additions & 42 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,13 +24,13 @@
24
24
25
25
##Обзор приложения
26
26
27
-
Прежде чем приступать к решению поставленных задач, необходимо изучить структуру используемого приложения BlogApplicaion с помощью панели Amplicode Explorer. Чтобы открыть данную панель, используйте следующую иконку:
27
+
Прежде чем приступать к решению поставленных задач, необходимо изучить структуру используемого приложения`BlogApplicaion` с помощью панели Amplicode Explorer. Чтобы открыть данную панель, используйте следующую иконку:
28
28
29
29
Панель выглядит следующим образом:
30
30
31
31

32
32
33
-
Чтобы проанализировать приложение в контексте используемых фреймворков и библиотек с помощью панели Amplicode Explorer, нажмите на значок стрелочкирябом с именем проекта, чтобы развернуть его. Здесь мы можем узнать, какие модули подключены к нашему проекту, что из себя представляет слой данных, какие эндпонты доступны, а также какие файлы для развертывания приложений уже есть в проекте.
33
+
Чтобы проанализировать приложение в контексте используемых фреймворков и библиотек с помощью панели Amplicode Explorer, нажмите на значок стрелочкирядом с именем проекта, чтобы развернуть его. Здесь мы можем узнать, какие модули подключены к нашему проекту, что из себя представляет слой данных, какие эндпонты доступны, а также какие файлы для развертывания приложений уже есть в проекте.
34
34
35
35

36
36
@@ -135,7 +135,7 @@ Amplicode Explorer позволяет добавить необходимые с
135
135
136
136
* Выполнить команду`flywayBaseline`, чтобы отметить скрипт инициализации как выполненный
137
137
138
-
По итогу выполненных действий команда будет успешно выполнена, системная таблица Flyway будет добавлена в базу данных, при этом в ней будетсожержаться информация о выполненном файле миграции. Выполнение первой задачи на этом завершено.
138
+
По итогу выполненных действий команда будет успешно выполнена, системная таблица Flyway будет добавлена в базу данных, при этом в ней будетсодержаться информация о выполненном файле миграции. Выполнение первой задачи на этом завершено.
139
139
140
140
##Модификация JPA модели
141
141
@@ -164,6 +164,7 @@ Amplicode Explorer позволяет добавить необходимые с
164
164

165
165
* Выберите**Entity Attribute**
166
166
* Введите тип (**String**) и имя (**text**) для атрибута
167
+
<!-- This pic needs a replacement, set the attribute as mandatory at once-->
167
168

168
169
* Нажмите**OK**
169
170
* Еще раз вызовите окно**Generate**
@@ -217,8 +218,9 @@ Amplicode позволяет нам улучшить существующий с
217
218
<!-- This pic needs a replacement-->
218
219

219
220
220
-
Перед сохранениемchangelogфайлов можем еще раз убедиться в их корректности в окне предпросмотра.
221
+
Перед сохранением файлов миграции можем еще раз убедиться в их корректности в окне предпросмотра.
221
222
223
+
<!-- This pic needs a replacement-->
222
224

223
225
224
226
Кстати, есть еще один скрипт, который мы упустили. Это скрипт удаления индекса из таблицы`Users`в секции**Ignored**.
@@ -227,53 +229,18 @@ Amplicode позволяет нам улучшить существующий с
227
229
228
230
Amplicode автоматически разместил этот скрипт в данную секцию, т.к. создание индекса может быть довольно дорогостоящей операцией, а его добавление на уровне JPA модели не является довольно распространенным. Поэтому в реальной жизни удалять его из базы данных приходится крайне редко.
229
231
232
+
<!-- This pic needs a replacement-->
230
233

231
234
232
235
Но в случае необходимости всегда можно удалить скрипт из списка игнорируемых, либо наоборот расширить список игнорируемых скриптов, выбрав и перетащив ненужные скрипты в секцию**Ignored** прямо в окне предпросмотра или сконфигурировав такой список заранее в настройках.
233
236
234
-
Оба changelog файла успешно сгенерированы и включены в наш основной файл`db.changelog-master.xml`.
235
-
236
-
Остается только выполнить скрипты и накатить изменения в базу данных. Конечно же, самым правильным подходом к применению скриптов миграции будет настройка Flyway плагина для Maven или Gradle, т.к. он в любом случае понадобится во время настройки CI/CD pipeline. Но, чтобы не отвлекаться на эту задачу на данном этапе, в рамках данного гайда можно воспользоваться действием**Flyway Update** в Amplicode и накатить скрипты без предварительной настройки плагина, отложив эту задачу на потом.
237
+
Оба файла миграции успешно сгенерированы. Выполните их, используя команду`flywayMigrate` и проверьте статус исполнения командой`flywayInfo`.
237
238
238
-
<!-- This pic needs a replacement-->
239
-

240
-
241
-
При выборе данного пункта из меню появится следующее выплывающее окно. Нажмите в нам кнопку**Update**.
239
+
Миграция прошла успешно.
242
240
243
241
<!-- This pic needs a replacement-->
244
-

245
-
246
-
Все скрипты выполнились успешно, а информация об их успешном выполнении была записана в таблицу`databasechangelog`.
247
-
248
242

249
243
250
-
##Добавление новых скриптов миграции в существующий файл
251
-
252
-
Модифицируя JPA модель, мы забыли сделать атрибут`text` для сущности`Comment` обязательным.
253
-
254
-

255
-
256
-
Исправить эту оплошность довольно легко.
257
-
258
-
Для этого, воспользуйтесь панелью Amplicode Designer и пометьте атрибут как обязательный:
259
-
260
-

261
-
262
-
Однако, засорять проект множеством Flyway changelog файлов нежелательно. К тому же, данный скрипт относится именно к changelog файлу, содержащему скрипты, связанные с созданием таблицы`Comments`. Благодаря тому, что Flyway исполняет и фиксирует исполнение именно changeset'ов, из которых состоит changelog файл, а не исполнение всего changelog файла целиком, мы можем дополнить существующие changelog файлы новыми changeset скриптами. Amplicode хорошо знает про подобную возможность и позволяет догенерировать необходимые скрипты в существующий файл.
263
-
264
-
Для этого:
265
-
266
-
* Откройте нужный нам changelog файл и обратитесь к меню**Generate** от IntelliJ IDEA и выберите пункт**Flyway Diff Changes** от Amplicode.
267
-
268
-
<!-- This pic needs a replacement-->
269
-
270
-

271
-
272
-
* В открывшемся всплывающем окне нажмите**OK**.
273
-
Новый changeset будет добавлен в существующий changelog файл.
274
-
275
-
* Накатите изменения (как показано выше) и проверьте таблицу`databasechangelog` через pgAdmin.
276
-
277
244
##Запуск Spring Boot приложения (анализ логов от Amplicode)
278
245
279
246
Хорошей практикой при разработке Spring Boot приложения и использованием системы версионирования баз данных является применение возможностей валидации соответствия JPA модели и схемы базы данных при помощи Hibernate. Путем использования свойства Hibernate`spring.jpa.hibernate.ddl-auto` со значением`validate` мы можем обеспечить соответствие JPA модели и схемы базы данных.
Если приложение запущено без проблем, лог должен выглядеть примерно следующим образом:
296
263
264
+
<!-- This pic needs a replacement-->
297
265

298
266
299
267
Столь же важно отметить, что в случае несоответствия JPA модели и схемы базы данных Amplicode сообщил бы о проблеме и дал бы возможность решить ее прямо из stacktrace.