{"id":2904,"date":"2022-01-03T14:19:57","date_gmt":"2022-01-03T13:19:57","guid":{"rendered":"https:\/\/arasoftware.pl\/?p=2904"},"modified":"2022-01-03T14:20:00","modified_gmt":"2022-01-03T13:20:00","slug":"flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot","status":"publish","type":"post","link":"https:\/\/arasoftware.pl\/en\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/","title":{"rendered":"Flyway &#8211; migrowanie bazy danych w aplikacji Spring Boot"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania: <\/span> <span class=\"rt-time\">4<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span><h3 class=\"wp-block-heading wp-block-heading\" id=\"czym-jest-flyway\">Czym jest Flyway?<\/h3>\n\n\n<p class=\"wp-block-paragraph\"><strong>Flyway jest narz&#281;dziem pozwalaj&#261;cym utrzymywa&#263; baz&#281; danych w odpowiedniej wersji za pomoc&#261; migracji. Eliminuje to problemy z utrzymaniem sp&oacute;jno&#347;ci. Wprowadza r&oacute;wnie&#380; prosty, ale wystarczaj&#261;cy, system kontroli wersji baz danych. <\/strong>Aplikacje wykorzystuj&#261;ce Flayway mog&#261; same zarz&#261;dza&#263; wersj&#261; bazy danych na danym &#347;rodowisku.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Cz&#281;sto spotykamy si&#281; z problemem&nbsp;&#8222;rozjazd&oacute;w&#8221;&nbsp;na bazie danych&nbsp;pomi&#281;dzy&nbsp;poszczeg&oacute;lnymi &#347;rodowiskami, na kt&oacute;rych jest zainstalowana aplikacja. W przypadku kodu &#378;r&oacute;d&#322;owego utrzymywanie jednej sp&oacute;jnej wersji aplikacji jest stosunkowo proste. Wystarczy u&#380;y&#263; jednego z&nbsp;dost&#281;pnych&nbsp;system&oacute;w kontroli wersji. A co ze struktur&#261; bazy danych, z kt&oacute;rej korzysta aplikacja? Jak j&#261;&nbsp;wersjonowa&#263;&nbsp;i utrzymywa&#263; jej&nbsp;sp&oacute;jno&#347;&#263;?<\/p>\n\n\n<h3 class=\"wp-block-heading wp-block-heading\" id=\"flyway-i-spring-boot-instalacja-zalec5bcnoc59bci-i-konfiguracja\">Flyway i Spring Boot &#8211; Instalacja zale&#380;no&#347;ci i konfiguracja<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Jak ka&#380;da zale&#380;no&#347;&#263; w Spring, tak i Flyway musi zosta&#263; zaimportowany do naszego projektu za po&#347;rednictwem np. Maven&#8217;a. Dodatkowo musimy stworzy&#263; nowy plugin w naszym pliku pom.xml, kt&oacute;ry b&#281;dzie wykorzystywany przez maven&#8217;a podczas budowania projektu. <\/p>\n\n\n<p class=\"wp-block-paragraph\">Na pocz&#261;tek dodajmy niezb&#281;dne zale&#380;no&#347;ci. W naszym pokazowym projekcie u&#380;yjemy Postgres&#8217;a jako baz&#281; danych. Musimy pami&#281;ta&#263;, &#380;e je&#347;li chcemy u&#380;ywa&#263; bazy danych w naszej aplikacji, to pomocne b&#281;dzie dodanie te&#380; zale&#380;no&#347;ci &#8222;spring-boot-starter-data-jpa&#8221;<\/p>\n\n\n\n<pre title=\"po.xml\" class=\"wp-block-code\"><code lang=\"xml\" class=\"language-xml line-numbers\">    &lt;dependencies>\r\n\t\t&lt;dependency>\r\n\t\t\t&lt;groupId>org.springframework.boot&lt;\/groupId>\r\n\t\t\t&lt;artifactId>spring-boot-starter-data-jpa&lt;\/artifactId>\r\n\t\t&lt;\/dependency>\r\n\t\t&lt;dependency>\r\n\t\t\t&lt;groupId>org.flywaydb&lt;\/groupId>\r\n\t\t\t&lt;artifactId>flyway-core&lt;\/artifactId>\r\n\t\t\t&lt;version>${flyway.version}&lt;\/version>\r\n\t\t&lt;\/dependency>\r\n\t\t&lt;dependency>\r\n\t\t\t&lt;groupId>org.postgresql&lt;\/groupId>\r\n\t\t\t&lt;artifactId>postgresql&lt;\/artifactId>\r\n\t\t\t&lt;version>42.2.8&lt;\/version>\r\n\t\t\t&lt;scope>runtime&lt;\/scope>\r\n\t\t&lt;\/dependency>\r\n\t\t&lt;dependency>\r\n\t\t\t&lt;groupId>org.springframework.boot&lt;\/groupId>\r\n\t\t\t&lt;artifactId>spring-boot-starter-test&lt;\/artifactId>\r\n\t\t\t&lt;scope>test&lt;\/scope>\r\n\t\t&lt;\/dependency>\r\n\t\t&lt;dependency>\r\n\t\t\t&lt;groupId>org.springframework.boot&lt;\/groupId>\r\n\t\t\t&lt;artifactId>spring-boot-starter-web&lt;\/artifactId>\r\n\t\t&lt;\/dependency>\r\n\t&lt;\/dependencies><\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Twoje sprawne oko programisty pewnie zobaczy&#322;o, &#380;e wersja Flyway&#8217;a jest ukryta pod placecholderem &#8222;${flyway.version}&#8221;. Nie musisz definiowa&#263; tej w&#322;a&#347;ciwo&#347;ci samodzielnie w pliku pm.xml. Standardowa konfiguracja zale&#380;no&#347;ci Spring Boot&#8217;a na Twoim &#347;rodowisku deweloperskim powinna zawiera&#263; definicj&#281; wersji Flyway &#8211; tak jak na obrazie poni&#380;ej.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"861\" height=\"224\" src=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-1.png\" alt=\"Spring Boot dependencies version\" class=\"wp-image-3035\" srcset=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-1.png 861w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-1-300x78.png 300w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-1-768x200.png 768w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-1-18x5.png 18w\" sizes=\"auto, (max-width: 861px) 100vw, 861px\" \/><figcaption>Wersje zale\u017cno\u015bci Spring Boot<\/figcaption><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Wspomnia&#322;em wcze&#347;niej o implementacji pluginu w pom.xml. Oto on \ud83d\ude42<\/p>\n\n\n\n<pre title=\"pom.xml\" class=\"wp-block-code\"><code lang=\"xml\" class=\"language-xml line-numbers\">            &lt;plugin&gt;\r\n\t\t\t\t&lt;groupid&gt;org.flywaydb&lt;\/groupid&gt;\r\n\t\t\t\t&lt;artifactid&gt;flyway-maven-plugin&lt;\/artifactid&gt;\r\n\t\t\t\t&lt;version&gt;${flyway.version}&lt;\/version&gt;\r\n\t\t\t\t&lt;configuration&gt;\r\n\t\t\t\t\t&lt;driver&gt;org.postgresql.Driver&lt;\/driver&gt;\r\n\t\t\t\t\t&lt;url&gt;jdbc:postgresql:\/\/localhost:5432\/postgres&lt;\/url&gt;\r\n\t\t\t\t\t&lt;user&gt;postgres&lt;\/user&gt;\r\n\t\t\t\t\t&lt;password&gt;my_password&lt;\/password&gt;\r\n\t\t\t\t\t&lt;table&gt;flyway_schema_history&lt;\/table&gt;\r\n\t\t\t\t\t&lt;locations&gt;\r\n\t\t\t\t\t\t&lt;location&gt;classpath:db\/migration\/&lt;\/location&gt;\r\n\t\t\t\t\t&lt;\/locations&gt;\r\n\t\t\t\t&lt;\/configuration&gt;\r\n\t\t\t&lt;\/plugin&gt;<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Plugin zawiera kilka istotnych informacji. Pierwsz&#261; z nich jest definicja po&#322;&#261;czenia do bazy danych, kt&oacute;ra b&#281;dzie wykorzystywana do naszej aplikacji. Standardowo jak dla ka&#380;dej aplikacji w Spring Boot podajemy tutaj dane o driverze, URL za&nbsp;pomoc&#261;&nbsp;kt&oacute;rego mo&#380;emy si&#281;&nbsp;po&#322;&#261;czy&#263;&nbsp;z nasz&#261; baz&#261;, nazwa&nbsp;u&#380;ytkownika&nbsp;oraz has&#322;o.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Flayway do trzymania informacji o wersjach bazy danych wykorzystuj\u0119&hellip;. w\u0142a\u015bnie baz\u0119 danych \ud83d\ude42 Oczywi\u015bcie jest mu potrzebna dedykowana tabela w naszej bazie, kt&oacute;ra b\u0119dzie przechowywa\u0142a informacje o wykonanych migracjach. Jej nazw\u0119 mo\u017cna skonfigurowa\u0107 za pomoc\u0105 opcji &bdquo;&lt;table&gt;&rdquo; w pluginie. W projekcie pokazowym jest ona ustawiona na &bdquo;flyway_schema_history&rdquo;.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ostatnim niezb&#281;dnym elementem konfiguracji&nbsp;pluginu&nbsp;jest podanie katalogu, w kt&oacute;rym b&#281;d&#261; przetrzymywane skrypty SQL. Mo&#380;emy poda&#263; tu wiele r&oacute;&#380;nych lokalizacji. Dla uproszczenia u&#380;yjemy tutaj standardowej lokalizacji&nbsp;&#8222;classpath:db\/migration\/&#8221;. Musimy&nbsp;pami&#281;ta&#263;, aby&nbsp;utworzy&#263; w naszym projekcie tak&#261; struktur&#281; katalog&oacute;w.<\/p>\n\n\n<h3 class=\"wp-block-heading wp-block-heading\" id=\"flyway-i-spring-boot-tworzenie-migracji\">Flyway i Spring Boot &#8211; Tworzenie migracji<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Kolejnym krokiem, jaki musisz wykona&#263;, jest utworzenie pierwszego pliku migracji. Nazwijmy go&nbsp;V1_0__init_db.sql. Dziwna nazwa? Jest ona podyktowana pewn&#261; konwencj&#261; nazewnicz&#261;. Zawiera ona wersj&#281; oraz opis migracji. W naszym przypadku po zbudowaniu aplikacji powinni&#347;my posiada&#263; baz&#281; danych w wersji 1.0, a nazwa migracji powinna by&#263; ustawiona na&nbsp;&#8222;init&nbsp;db&#8221;. Separatorem tych informacji jest&nbsp;podwujny&nbsp;znak&nbsp;&#8222;_&#8221;. To, co jest zdefiniowane przed tym separatorem,&nbsp;jest uznawane&nbsp;przez&nbsp;Flyway&#8217;a&nbsp;za&nbsp;wersj&#281; migracji. Natomiast wszystko za separatorem jest opisem naszej migracji.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"470\" src=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-2.png\" alt=\"Flyway example migration\" class=\"wp-image-3038\" srcset=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-2.png 846w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-2-300x167.png 300w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-2-768x427.png 768w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-2-18x10.png 18w\" sizes=\"auto, (max-width: 846px) 100vw, 846px\" \/><figcaption>Flyway &#8211; przyk\u0142adowa migracja<\/figcaption><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Czas napisa&#263; Prosty&nbsp;skrypt&nbsp;SQL, kt&oacute;ry stworzy testow&#261; tabel&#281;, kt&oacute;ra b&#281;dzie przechowywa&#322;a podstawowe informacje o u&#380;ytkownikach aplikacji.<\/p>\n\n\n\n<pre title=\"V1_0__init_db.sql\" class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql line-numbers\">CREATE TABLE USERS (\r\n  ID INT NOT NULL,\r\n  FIRST_NAME VARCHAR(50) NOT NULL,\r\n  LAST_NAME VARCHAR(50) NOT NULL,\r\n  EMAIL VARCHAR(50) NOT NULL\r\n);<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading wp-block-heading\" id=\"zarzc485dzanie-migracjami\">Zarz&#261;dzanie migracjami<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Do odpalenia naszej migracji wystarczy, &#380;e uruchomisz swoj&#261; aplikacj&#281;. Po poprawnym uruchomieniu aplikacji w logach powinni&#347;my zobaczy&#263;, &#380;e&nbsp;Flyway&nbsp;zmigrowa&#322;&nbsp;baz&#281; danych do wersji 1.0.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"849\" height=\"151\" src=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-6.png\" alt=\"Flyway - migration logs\" class=\"wp-image-3047\" srcset=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-6.png 849w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-6-300x53.png 300w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-6-768x137.png 768w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-6-18x3.png 18w\" sizes=\"auto, (max-width: 849px) 100vw, 849px\" \/><figcaption>Flyway &#8211; logi z migracji<\/figcaption><\/figure>\n\n\n<p class=\"wp-block-paragraph\">W bazie danych wida&#263;, &#380;e Flyway utworzy&#322; dwie tabele:<\/p>\n\n\n<ul class=\"wp-block-list wp-block-list\" style=\"\">\n<li>FLYWAY_SCHEMA_HISTORY &#8211; tabela przechowuj&#261;ca informacj&#281; o migracjach bazy danych.<\/li>\n<li>USERS &#8211; tabela utworzona podczas migracji. Jej definicja jest zapisana w pliku &#8222;V1_0__init_db.sql&#8221;<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"398\" height=\"246\" src=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-4.png\" alt=\"Flyway - database schema\" class=\"wp-image-3041\" srcset=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-4.png 398w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-4-300x185.png 300w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-4-18x12.png 18w\" sizes=\"auto, (max-width: 398px) 100vw, 398px\" \/><figcaption>Flyway &#8211; schemat bazy danych<\/figcaption><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Warto zapozna&#263; si&#281; z zawarto&#347;ci&#261; tabeli&nbsp;&#8222;FLYWAY_SCHEMA_HISTORY&#8221;, aby dowiedzie&#263; si&#281;,&nbsp;jak&nbsp;Flyway&nbsp;zarz&#261;dza migracjami. Ta tabela zawiera wiele ciekawych informacji na temat&nbsp;tego, jakie&nbsp;migracje zosta&#322;y wykonane (lub zako&#324;czy&#322;y si&#281; b&#322;&#281;dem), dat&#281; czas wykonania konkretnej migracji, wymienione wcze&#347;niej wersj&#281; i opis migracji oraz sum&#281; kontroln&#261;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-7-1024x94.png\" alt=\"Flyway - FLYWAY_SCHEMA_HISTORY\" class=\"wp-image-3048\" width=\"1024\" height=\"94\" srcset=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-7-1024x94.png 1024w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-7-300x27.png 300w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-7-768x70.png 768w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-7-1536x140.png 1536w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-7-18x2.png 18w, https:\/\/arasoftware.pl\/wp-content\/uploads\/2022\/01\/image-7.png 1564w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Flyway &#8211; FLYWAY_SCHEMA_HISTORY<\/figcaption><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Ka&#380;da migracja posiada swoj&#261; sum&#281; kontroln&#261;, wi&#281;c edycja istniej&#261;cych plik&oacute;w SQL z migracjami wymaga wyczyszczenia bazy danych przed ponown&#261; migracj&#261;. Inaczej&nbsp;Flyway&nbsp;sprawdza sum&#281; kontroln&#261;&nbsp;migracji, nawet je&#347;li&nbsp;by&#322;a ju&#380; wykonana na bazie. Je&#347;li chcemy zmieni&#263; co&#347; w pliku z migracj&#261;, to mo&#380;emy wcze&#347;niej wyczy&#347;ci&#263; baz&#281; danych i uruchomi&#263; migracj&#281; ponownie. Do czyszczenia bazy danych za pomoc&#261;&nbsp;Flyway&nbsp;mo&#380;emy u&#380;y&#263; komendy&nbsp;maven&#8217;a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">mvn flyway:clean<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Oczywi&#347;cie Flyway udost&#281;pnia wiele komend, kt&oacute;re pomog&#261; Ci zarz&#261;dza&#263; wersj&#261; bazy danych r&#281;cznie &#8211; <a href=\"https:\/\/flywaydb.org\/documentation\/usage\/maven\/\" target=\"_blank\" rel=\"noreferrer noopener\">Zobacz wi&#281;cej w dokumentacji Flyway&#8217;a<\/a>.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/arasoftware.pl\/programowanie\/\">Je&#347;li potrzebujesz pomocy<\/a> w skonfigurowaniu Flyway w swoim projekcie, to <a href=\"https:\/\/arasoftware.pl\/kontakt\/\">skontaktuj si&#281; z nami<\/a>!<\/p>","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania: <\/span> <span class=\"rt-time\">4<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span> Czym jest Flyway? Flyway jest narz&#281;dziem pozwalaj&#261;cym utrzymywa&#263; baz&#281; danych w odpowiedniej wersji za pomoc&#261; migracji. Eliminuje to problemy z utrzymaniem sp&oacute;jno&#347;ci. Wprowadza r&oacute;wnie&#380; prosty, ale wystarczaj&#261;cy, system kontroli wersji baz danych. Aplikacje wykorzystuj&#261;ce Flayway mog&#261; same zarz&#261;dza&#263; wersj&#261; bazy danych na danym &#347;rodowisku. Cz&#281;sto spotykamy si&#281; z problemem&nbsp;&#8222;rozjazd&oacute;w&#8221;&nbsp;na bazie danych&nbsp;pomi&#281;dzy&nbsp;poszczeg&oacute;lnymi &#347;rodowiskami, na kt&oacute;rych jest &hellip;<\/p>","protected":false},"author":1,"featured_media":2908,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,13,19],"tags":[],"class_list":["post-2904","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bez-kategorii","category-programowanie","category-spring-boot"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.11 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Flyway - migrowanie bazy danych w aplikacji Spring Boot - Ara Software<\/title>\n<meta name=\"description\" content=\"Flyway jest narz\u0119dziem pozwalaj\u0105cym utrzymywa\u0107 baz\u0119 danych w odpowiedniej wersji za pomoc\u0105 migracji. Eliminuje to problemy z utrzymaniem sp\u00f3jno\u015bci.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/arasoftware.pl\/en\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flyway - migrowanie bazy danych w aplikacji Spring Boot\" \/>\n<meta property=\"og:description\" content=\"Flyway jest narz\u0119dziem pozwalaj\u0105cym utrzymywa\u0107 baz\u0119 danych w odpowiedniej wersji za pomoc\u0105 migracji. Eliminuje to problemy z utrzymaniem sp\u00f3jno\u015bci. Wprowadza r\u00f3wnie\u017c prosty, ale wystarczaj\u0105cy, system kontroli wersji baz danych. Aplikacje wykorzystuj\u0105ce Flayway mog\u0105 same zarz\u0105dza\u0107 wersj\u0105 bazy danych na danym \u015brodowisku.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/arasoftware.pl\/en\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/\" \/>\n<meta property=\"og:site_name\" content=\"Ara Software\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-03T13:19:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-03T13:20:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2021\/12\/flyway_spring.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Radek Osak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Flyway - migrowanie bazy danych w aplikacji Spring Boot\" \/>\n<meta name=\"twitter:description\" content=\"Flyway jest narz\u0119dziem pozwalaj\u0105cym utrzymywa\u0107 baz\u0119 danych w odpowiedniej wersji za pomoc\u0105 migracji. Eliminuje to problemy z utrzymaniem sp\u00f3jno\u015bci. Wprowadza r\u00f3wnie\u017c prosty, ale wystarczaj\u0105cy, system kontroli wersji baz danych. Aplikacje wykorzystuj\u0105ce Flayway mog\u0105 same zarz\u0105dza\u0107 wersj\u0105 bazy danych na danym \u015brodowisku.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2021\/12\/flyway_spring.png\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Radek Osak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/\"},\"author\":{\"name\":\"Radek Osak\",\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/person\/a13fe68bd27e762ef255547a88956902\"},\"headline\":\"Flyway &#8211; migrowanie bazy danych w aplikacji Spring Boot\",\"datePublished\":\"2022-01-03T13:19:57+00:00\",\"dateModified\":\"2022-01-03T13:20:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/\"},\"wordCount\":822,\"publisher\":{\"@id\":\"https:\/\/arasoftware.pl\/#organization\"},\"articleSection\":[\"Bez kategorii\",\"Programowanie\",\"Spring Boot\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/\",\"url\":\"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/\",\"name\":\"Flyway - migrowanie bazy danych w aplikacji Spring Boot - Ara Software\",\"isPartOf\":{\"@id\":\"https:\/\/arasoftware.pl\/#website\"},\"datePublished\":\"2022-01-03T13:19:57+00:00\",\"dateModified\":\"2022-01-03T13:20:00+00:00\",\"description\":\"Flyway jest narz\u0119dziem pozwalaj\u0105cym utrzymywa\u0107 baz\u0119 danych w odpowiedniej wersji za pomoc\u0105 migracji. Eliminuje to problemy z utrzymaniem sp\u00f3jno\u015bci.\",\"breadcrumb\":{\"@id\":\"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/arasoftware.pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flyway &#8211; migrowanie bazy danych w aplikacji Spring Boot\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/arasoftware.pl\/#website\",\"url\":\"https:\/\/arasoftware.pl\/\",\"name\":\"Ara Software\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/arasoftware.pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/arasoftware.pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/arasoftware.pl\/#organization\",\"name\":\"Ara Software\",\"url\":\"https:\/\/arasoftware.pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2023\/06\/ara-logo-light-1.svg\",\"contentUrl\":\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2023\/06\/ara-logo-light-1.svg\",\"width\":317,\"height\":55,\"caption\":\"Ara Software\"},\"image\":{\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/person\/a13fe68bd27e762ef255547a88956902\",\"name\":\"Radek Osak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2a5a97fd24033c3df7dff799dc95774b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2a5a97fd24033c3df7dff799dc95774b?s=96&d=mm&r=g\",\"caption\":\"Radek Osak\"},\"url\":\"https:\/\/arasoftware.pl\/en\/author\/radek030790gmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Flyway - migrowanie bazy danych w aplikacji Spring Boot - Ara Software","description":"Flyway jest narz\u0119dziem pozwalaj\u0105cym utrzymywa\u0107 baz\u0119 danych w odpowiedniej wersji za pomoc\u0105 migracji. Eliminuje to problemy z utrzymaniem sp\u00f3jno\u015bci.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/arasoftware.pl\/en\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/","og_locale":"en_US","og_type":"article","og_title":"Flyway - migrowanie bazy danych w aplikacji Spring Boot","og_description":"Flyway jest narz\u0119dziem pozwalaj\u0105cym utrzymywa\u0107 baz\u0119 danych w odpowiedniej wersji za pomoc\u0105 migracji. Eliminuje to problemy z utrzymaniem sp\u00f3jno\u015bci. Wprowadza r\u00f3wnie\u017c prosty, ale wystarczaj\u0105cy, system kontroli wersji baz danych. Aplikacje wykorzystuj\u0105ce Flayway mog\u0105 same zarz\u0105dza\u0107 wersj\u0105 bazy danych na danym \u015brodowisku.","og_url":"https:\/\/arasoftware.pl\/en\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/","og_site_name":"Ara Software","article_published_time":"2022-01-03T13:19:57+00:00","article_modified_time":"2022-01-03T13:20:00+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/arasoftware.pl\/wp-content\/uploads\/2021\/12\/flyway_spring.png","type":"image\/png"}],"author":"Radek Osak","twitter_card":"summary_large_image","twitter_title":"Flyway - migrowanie bazy danych w aplikacji Spring Boot","twitter_description":"Flyway jest narz\u0119dziem pozwalaj\u0105cym utrzymywa\u0107 baz\u0119 danych w odpowiedniej wersji za pomoc\u0105 migracji. Eliminuje to problemy z utrzymaniem sp\u00f3jno\u015bci. Wprowadza r\u00f3wnie\u017c prosty, ale wystarczaj\u0105cy, system kontroli wersji baz danych. Aplikacje wykorzystuj\u0105ce Flayway mog\u0105 same zarz\u0105dza\u0107 wersj\u0105 bazy danych na danym \u015brodowisku.","twitter_image":"https:\/\/arasoftware.pl\/wp-content\/uploads\/2021\/12\/flyway_spring.png","twitter_misc":{"Written by":"Radek Osak","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/#article","isPartOf":{"@id":"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/"},"author":{"name":"Radek Osak","@id":"https:\/\/arasoftware.pl\/#\/schema\/person\/a13fe68bd27e762ef255547a88956902"},"headline":"Flyway &#8211; migrowanie bazy danych w aplikacji Spring Boot","datePublished":"2022-01-03T13:19:57+00:00","dateModified":"2022-01-03T13:20:00+00:00","mainEntityOfPage":{"@id":"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/"},"wordCount":822,"publisher":{"@id":"https:\/\/arasoftware.pl\/#organization"},"articleSection":["Bez kategorii","Programowanie","Spring Boot"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/","url":"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/","name":"Flyway - migrowanie bazy danych w aplikacji Spring Boot - Ara Software","isPartOf":{"@id":"https:\/\/arasoftware.pl\/#website"},"datePublished":"2022-01-03T13:19:57+00:00","dateModified":"2022-01-03T13:20:00+00:00","description":"Flyway jest narz\u0119dziem pozwalaj\u0105cym utrzymywa\u0107 baz\u0119 danych w odpowiedniej wersji za pomoc\u0105 migracji. Eliminuje to problemy z utrzymaniem sp\u00f3jno\u015bci.","breadcrumb":{"@id":"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/arasoftware.pl\/flyway-migrowanie-bazy-danych-w-aplikacji-spring-boot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/arasoftware.pl\/"},{"@type":"ListItem","position":2,"name":"Flyway &#8211; migrowanie bazy danych w aplikacji Spring Boot"}]},{"@type":"WebSite","@id":"https:\/\/arasoftware.pl\/#website","url":"https:\/\/arasoftware.pl\/","name":"Ara Software","description":"","publisher":{"@id":"https:\/\/arasoftware.pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/arasoftware.pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/arasoftware.pl\/#organization","name":"Ara Software","url":"https:\/\/arasoftware.pl\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/arasoftware.pl\/#\/schema\/logo\/image\/","url":"https:\/\/arasoftware.pl\/wp-content\/uploads\/2023\/06\/ara-logo-light-1.svg","contentUrl":"https:\/\/arasoftware.pl\/wp-content\/uploads\/2023\/06\/ara-logo-light-1.svg","width":317,"height":55,"caption":"Ara Software"},"image":{"@id":"https:\/\/arasoftware.pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/arasoftware.pl\/#\/schema\/person\/a13fe68bd27e762ef255547a88956902","name":"Radek Osak","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/arasoftware.pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2a5a97fd24033c3df7dff799dc95774b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2a5a97fd24033c3df7dff799dc95774b?s=96&d=mm&r=g","caption":"Radek Osak"},"url":"https:\/\/arasoftware.pl\/en\/author\/radek030790gmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/posts\/2904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/comments?post=2904"}],"version-history":[{"count":18,"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/posts\/2904\/revisions"}],"predecessor-version":[{"id":3052,"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/posts\/2904\/revisions\/3052"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/media\/2908"}],"wp:attachment":[{"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/media?parent=2904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/categories?post=2904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/tags?post=2904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}