JavaRush /Java Blog /Random-TK /SpringBoot + Flyway - "A-dan Z-a çenli Java taslamasy"

SpringBoot + Flyway - "A-dan Z-a çenli Java taslamasy"

Toparda çap edildi
Java taslamasyny döretmek baradaky seriýadan bir makala (beýleki materiallara baglanyşyk ahyrynda). Maksady esasy tehnologiýalary seljermek, netijesi telegramma bot ýazmak. Bu bölümde “SpringBoot” we “Flyway” -lary işe girizmäge synanyşýarys. Nazaryýetiň iň az mukdary, isleýşiňiz ýaly))) “Flyway / Liquibase” -ni belli bir wagta çenli gutarnykly deňeşdirmäni goýup, netijä gelýäris. Şeýle-de bolsa, ol eýýäm çekildi. Uçuşy iki gezek suratlandyrmazlyk üçin, derrew geljekki JRTB taslamamyza goşmagy makul bildim."A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 1

Munuň bir bölegi hökmünde näme etmeli?

  1. Maven esasly “SpringBoot” programmasyny işe giriziň.
  2. Şol ýere “Flyway” goşuň: bagtymyza, olar aňsat birleşdirilýär.
  3. Mysal maglumatlar bazasyndaky tablisalar üçin shema goşuň.
Şeýlelik bilen, “Flyway” bilen nähili işlemelidigini öwreneris. Näme üçin aýratyn taslama, derrew JRTB-ä däl? Sebäbi soňrak, muny nädip etmelidigine düşünmek isleýän her bir adamda bir mysal we onuň bilen işlemegi beýan edýän makala bolar. Bolýar!

Uçuş ýoly näme?

Bir zady ulanmak üçin ilki bilen onuň nämedigini we sebäbini anyklamaly. “Flyway” maglumat bazasynyň wersiýasyna gözegçilik guralydyr. Sözler belli, ýöne nädip düşüniş goşulmady, şeýlemi? Uçuş ýolunyň çözýän meselesini suratlandyrmaga synanyşalyň. Taslamamyz bar diýeliň. Dünýämizdäki hemme zat ýaly, bu birkemsiz däl, şonuň üçin taslamanyň soňky wersiýasyny meýilleşdirmek we düzmek mümkin däldi. Her gezek belli bolmadyk hasaplanylýan nuanslar peýda bolýar. Taslama öz işinde maglumat bazasyny ulanýar. Elbetde, taslama üýtgese, maglumat bazasynyň gurluşy hem üýtgäp biler. Taslamamyzdaky guramalaryň biri üçin täze meýdan goşýarys diýeliň. Muny nädip etmeli?
  1. Bu ugry kärhanamyza goşuň, iş logikasynyň işlemegi üçin hemme zady täzeläň.
  2. Maglumat bazasyny täzeläň. Possibleeke-täk ýol muny el bilen etmekdir. Munuň üçin girip, zerur sql skriptini hasaba almaly.
Ikinji nokat köp sorag döredýär:
  1. Ouröne taslamamyzy ýerleşdirýän birden köp ýerimiz bar bolsa, bu olaryň hersinde edilmelimi?
  2. yza gaýdyp gelmek islesek, maglumatlar bazasynyň gurluşynyň häzirki ýagdaýyny nädip bilýäris?
  3. Maglumatlar bazasynyň üýtgemeginiň üstünlikli bolandygyna nädip ynanmaly?
  4. Taslamada bolup geçen maglumatlar bazasynyň üýtgemelerini yzarlamaga nädip mümkinçilik tapyp bilerin?
El bilen etseňiz, jogaplar iň gowusy bolmaz ... Bu kynçylyklaryň öňüni almak üçin maglumat bazasynyň göçüriş guralyny ulanyp bilersiňiz. Bularyň biri “Flyway”. Onuň işi näme? Taslamanyň bir bölegi hökmünde maglumatlar bazasy bilen edýän ähli zatlarymyzy bir wagtyň özünde saklaýan aýratyn sql faýllaryny (migrasiýa diýilýär) saklaýarys. Migrhli göçürmeler belli bir tertipde bolup geçýär, bu maglumatlar bazasynyň gurluşynda we maglumatlarynda bolup geçýän üýtgeşmeleri yzarlamaga mümkinçilik berýär (köplenç migrasiýa ulanyp, synag maglumatlary taslama käbir serwere ýerleşdirilende, eýýäm birneme bolýar) taslamany synap boljak bahalar). Synaglar geçensoň, taslama gurlanda göçler başlaýar. Maglumatlar bazasyna birikýärler we göçleri amala aşyrýarlar. Migrasiýa bu maglumat bazasynda eýýäm amala aşyrylan bolsa, uçuş ýoly olary diňe geçer (migrasiýa we olaryň ýagdaýy baradaky maglumatlary maglumatlar bazasynda aýratyn tablisada saklaýar, olary dolandyrmaga kömek edýär) we käbir migrasiýa şowsuz bolsa, taslama gurmak we serwere gurnamak (ýerleşdirmek) bes ediler. Mümkin boldugyça jikme-jik suratlandyrmaga synanyşdym. Everythinghli zat entek doly düşnüksiz bolsa, tapawudy ýok: tejribe bilen düşünişmek geler.

“SpringBoot + Flyway” -y işe giriziň

Bahar aýakgaby näme

Näme işe başlaýarys? ... Näme we näme üçin edýändigimize düşünmek üçin “SpringBoot” -yň nämedigini çözmeli. Ilki bilen, Bahar hakda çalt (gowy, gaty çalt) gürleşeliň . Häzirki wagtda Java-da serwer programmalaryny ösdürmekde de-fakto senagat standarty. Näme standart? Muny size nädip düşündirip bilerin? Bahar, programmanyň süňküdir, soň bolsa “eti” atarys - iş logikamyz. Baharyň kömegi bilen (mundan beýläk dilleri üýtgetmek üçin wagt ýitirmezlik üçin bu yz kagyzy ulanaryn: D)) Bahar bize hemme zady edip başlaýan başlangyç berýär. Köp taraply, köp modully:
  1. Maglumat bazasy bilen işlemek isleýärsiňizmi? Gatnaşyk isleýärsiňizmi? Baglanyşyksyz bolmak isleýärsiňizmi? Ine, bahar maglumatlary bilen.
  2. Http haýyşlary bilen işlemek isleýärsiňizmi? Ine, bahar web (Bahar MVC).
  3. Objectshli zatlaryňyz üçin bir ýerde konteýner gerekmi? Ine, bahar özeni.
  4. Dürli rollar we buýruk zynjyry bolar ýaly bir taslamada howpsuzlyk gurmalymy? Bahar howpsuzlygy.
  5. Diňe şunuň ýaly zadyň bolmagy gowy bolar diýip pikir edeniňde, Baharyň eýýäm saňa zerur zady bar we çalt we aňsat birleşýär.
Şonuň üçin munuň diňe bir çarçuwanyň (şeýle ullakan kitaphananyň) däl-de, eýsem bökdençlik bilen ösýän tutuş ekosistemanyň bardygyny aýdyp bileris. “Bahar ýadrosynyň” nämedigine, ýagny modullaryň birikdirilen esasyna düşünmek üçin size öz çarçuwany döretmek barada göni efirde tomaşa etmegi maslahat berýärin. Ony Java we Bahar meýdançasynda gaty ajaýyp ýigit gewgeniý Borisow alyp barýar. Eden zatlarynyň hemmesini ediň, baharyň işi size has aýdyň bolar. “SpringBoot” hem öz gezeginde bar zadynyň iň ýokary nokadydyr. Arassa suwuň jadysy. Programmanyň ilkinji işe girizilmegi üçin iň az sazlamalar. Elbetde, bu size nädip ulanmalydygy we näme etmelidigi barada düşünje bermez. Developmentöne ösüşiň çuňlugyna geçmezden ozal hemme zada guşuň gözünden seretmeli.

“SpringBoot” -y işe girizmek

Maveniň nämedigine eýýäm düşünipdik, geliň zerurlyklarymyz üçin täze taslama döredeliň. Munuň üçin diňe bu mesele üçin ýörite döredilen web sahypasyna girmeli. Bahar başlangyjy diýilýär . "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 2Bu ýerde size zerur zatlary doldurmaly we saýlamaly:
  1. Taslamany gurmak üçin gural gradle ýa-da maven. Görşüňiz ýaly, garynja indi agzalmaýar. Bu haýsy gurallaryň wagtyňyzy sarp etjekdigi barada gowy yşarat.
  2. Writeazyp boljak diliňiz java, kotlin, groovy. Bu ýerde hemme zat ýönekeý: hemmesi JVM ýaly we Java koduny aňsatlyk bilen işledýär. .Eri gelende aýtsak, Kotline seretmeli. Groowy aç-açan gyzyklanma döretdi (bir wagtlar truba geçdiler, ýöne çalt geçdi).
  3. Bahar wersiýasy ... Bu ýerde Baharyň esasy böleginiň we modullarynyň wersiýalarynyň yzygiderlidigine düşünmeli.
  4. Taslama maglumatlary. Men bu zatlary eýýäm beýan etdim.
  5. Haýsy arhiwiň ýygnaljakdygyny - Jar ýa-da Uruş saýlaýarys.
  6. Garaz, halaýanlarymyzyň Java wersiýasy. Recentlyaňy-ýakynda bu wersiýalar köp boldy ... Birnäçe ýyllap garaşdylar, indi bolsa ýylda iki.
Biziň ýagdaýymyzda, bu taslamany JavaRush jemgyýetçilik guramasynda neşir ederis , şonuň üçin taslama baradaky maglumatlar ýerlikli bolar:
  1. Maven - bu hakda öň gürleşenimiz hiç zat däl.
  2. Java biziň söýgülimiz: D.
  3. 2.2.11 wersiýasyny alalyň. Näme üçin iň täze däl? Näçe täze bolsa, şol ýerde käbir kemçilikleriň bolmagy mümkin. Biziň üçin haýsy wersiýanyň ähmiýeti ýok, ýöne köne görnüşi has ygtybarly bolar. Şonuň üçin 2.2.11 saýlaýarys.
  4. Topar: com.github.javarushcommunity
  5. Artifact: pru springina-uçuş-demo
  6. Ady: SpringBoot + Flyway Demo
  7. Düşündiriş: Taslama “SpringBoot” bilen “Flyway” -yň arasyndaky integrasiýany görkezýär . (Hawa, resminamalary ýazmak ukyby ösüşiň möhüm bölegi :))
  8. Bukjanyň ady: com.github.javarushcommunity.springbootflywaydemo . Bu ýerde derrew programmamyzy açjak synp bilen biziň üçin esasy bukjany dörederler.
  9. Gaplamak: banka
  10. Java: 8. Geliň, lokomotiwden öňe geçeliň we gowy köne sekizini alalyň. Näme üçin 11 däl? Näme üçin? Mysal üçin, men muny göremok.
"A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 3Indi modullary goşalyň. “Flyway” bilen integrasiýa tapmaly. Şeýle hem MySQL we Bahar maglumatlary bilen baglanyşykly bir zat goşup bilersiňiz. Başga bir lombok goşalyň (bu gaty zerur zat, häzirlikçe maňa ynanyň: D)) Munuň üçin ADD DEPENDENCIES düwmesine basyň ... we zerur zatlaryň hemmesini saýlaň: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 4Flyway-y şeýle goşýarys. "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 5Lombok ... we ş.m. Netijede, alýarys: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 6Huh ... hemme zady doldurdyk)) Indi GENERATE basyň ... we ine, döredilen taslama bilen arhiw taýýar :) Paýlaşmak ýaly ajaýyp zat hem bar ... , ýaňy dolduran sahypaňyza baglanyşyk berýär. .Agny, ine, meniň döreden zadym . Bir zat ýalňyş bolsa-da, baglanyşygy ulanyp hemişe barlap bilersiňiz. Ondan soň döredilen taslamany Git ammary bilen baglanyşdyrmalydyrys, şonuň üçin döredilen pru springina-uçuş-demo taslamasyny klonlaşdyryp , IDEA arkaly göçürip alarys. Munuň üçin pikiri açmaly we Bar bolan çeşmelerden Faýl -> Täze -> Taslamany saýlamaly ... : "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 7Indi URL goşuň we Klon basyň . Indiki ädim, döredilen taslamanyň içini klonlaşdyran taslamamyzyň içinde geçirmekdir. Bulaşdyňyzmy? Men häzir görkezerin. Men ony açdym we aşakdaky faýllar toplumyny aldym: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 8Bular klonlaşdyrylan taslama geçirilmeli. Öňki makalada bolşy ýaly, pom.xml-i täze bir taslama hökmünde goşalyň: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 9Indi biz üçin döredilen zatlara gyzyklanma bildirýäris. Src-de ähli bukjalary açsaňyz, öňki makalada ara alyp maslahatlaşan Maven taslamalarynda adaty iýerarhiýany görersiňiz . Okamadyklar üçin okaň! "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 10Programma synpymyzyň bardygyny görmek bolýar we “SpringBoot” programmamyz ulanyp başlar. “SpringBoot” üçin “Maven” plugininiň kömegi bilen, indi Maven üçin zerur bolan bahar-boot: run. Bu maglumatlary nireden tapyp bileris? Sag tarapda, Maven plastinkasyny we taslamamyzy açmak: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 11erroralňyşlyk bolar, ony okap bilmeris, şuňa meňzeş bir zady göreris: Has "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 12giňişleýin maglumat almak üçin esasy usuly işledip bileris Programma synpy: "Java-dan A-dan Z" taslamasy: SpringBoot + Flyway - 13Soň bolsa asyl sebäbini göreris: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 14Bu ýerde eýýäm has köp maglumat bar we siz onuň bilen bir zat edip bilersiňiz. Näme boldy? Maglumat bazasy bilen baglanyşykly garaşlylyklarymyz bar, şonuň üçin oňa birikmek üçin sazlamalary üpjün etmeli. Munuň üçin google-a girýäris we application.properties-e aşakdaky konfigurasiýalary goşmalydygymyzy görýäris:
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Esasy usuly täzeden işledýäris we alýarys: "Java-dan A-dan Z" taslamasy: SpringBoot + Flyway - 15Indi azyndan bir göçürme goşmaly. Migrasiýa dogry döretmek üçin aşakdaky şablony almaly: V <VERSION> __ <NAME> .sql Bu şablony ulanyp, degişli bukjada V00001__Create_country_table.sql atly göçürme faýly dörederis : / src / main / resources / db.migrasiýa / . Geliň, onda ýurt tablisasyny döredeliň. Maglumatlar bazasy baradaky ikinji makaladan ssenariý alalyň . "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 16Başlamazdan ozal girip, iş üçin maglumat bazasyny döredeliň: flyway_demo_db. Muny “MysqlWorkbench” -iň üsti bilen edeliň: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 17Indi esasy usuly täzeden işledip bileris: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 18Hemme zat netije berdi, ýöne taslamada entek hiç zadymyz ýoklygy sebäpli, ol işledi. Şeýle-de bolsa, surnallardan ( surnallaryň nämedigini okaň ) düşnüklidir:
  1. Maglumat bazasyna üstünlikli birikdirildi.
  2. Migrasiýa tassyklandy we hemme zat gowy.
  3. “Flyway” göçleri dolandyrmak üçin tablisa döretdi.
  4. 00001 haýsy migrasiýa başlandy - ýurdy döretmek üstünlikli boldy.
Muny barlamak üçin maglumat bazasynda näme edilýändigini görüp bilersiňiz. Geliň, MySQL serwerimize geçeliň we flyway_demo_db maglumat bazasyndaky tablisalarda nämeleriň bolup geçýändigini göreliň: $ USE flyway_demo_db; $ Jetwelleri görkezmek; "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 19Garaşyşym ýaly, migrasiýa bolup geçdi, şol döwürde ýurt tablisasy döredildi we migrasiýa barada maglumatlary saklaýan flyway_schema_history tablisasy peýda boldy. Geliň, haýsy ýazgylaryň bardygyny göreliň (we asla ýokmy). $ SELECT * Uçuş ýolundan_şema_history; "Java-dan A-dan Z" taslamasy: SpringBoot + Flyway - 20Ine, ýazgy. Onda köp gyzykly maglumatlar bar. Wersiýa, göç edilişiň beýany, SQL-iň haýsy görnüşi (we belki-de XML bolmagy mümkin), skriptiň ady, çek ( bu göçürmäniň üýtgändigini ýa-da ýokdugyny barlamak üçin ulanylýan hashkod ýaly bir zat. Bu edildi) maglumatlar bazasynda bir migrasiýa amala aşyran bolsak, soň bolsa düzedildi: bu edilip bilinmez, ähli üýtgeşmeler diňe täze migrasiýa arkaly amala aşyrylýar we munuň ýüze çykmagynyň öňüni almak üçin, barlag mukdary muňa gözegçilik edýär) , ulanyjy sql ady, migrasiýa gaýtadan işlemek senesi, ýerine ýetiriş wagty we netijesi (üstünlikli ýa-da şowsuz). Bir gezek ýazylan göçürme geljekde üýtgedilmeli däldir. Onda kemçilik bar bolsa-da. Changeshli üýtgeşmeler diňe täze göç arkaly amala aşyrylýar. Bu örän möhümdir. Näme boljagyny görkezmek üçin, skriptimizi azajyk üýtgedeliň we täzeden işlemäge synanyşalyň. Migrasiýamyzda ýurt tablisasyna bir ýazgy goşalyň: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 21esasy usuly işlediň we şuny alýarys: "Java-dan A-dan Z" taslamasy: SpringBoot + Flyway - 22Garaşyşym ýaly, uçuş ýoly skriptiň üýtgedilendigini we göç etmäni ýerine ýetirmändigini bildi. Käbir ýagdaýlarda täzelenen göçürmäni işletmek zerur bolup biler we uçuş-gonuş zolagyndan geçmek üçin “flyway_schema_history” tablisasyndaky ýazgyny pozmaly we täzelenen göçürmäni işletmeli. Bu adaty häsiýet däl we beýle bolmaly däl, ýöne meseläni çözmegiň bu usuly barada hem bilmeli. Ilkinji göç bilen iş salyşdyk. Indi maglumatlar bazasy baradaky makalada bolşy ýaly ýurtlar barada maglumatlar bilen başga bir migrasiýa goşmak isleýärin: faýl V00002__Add_test_data_to_country.sql"A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 23 Geliň, esasy usuly täzeden işledeliň: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 24surnallardan göç ediliş başlamazdan ozal maglumatlar bazasynyň bolandygy düşnüklidir 00001 wersiýasynda, şonuň üçin bu wersiýadan soň ähli göçler. Ondan soň 00002 wersiýasy işe girizildi we üstünlikli boldy. Barlap göreliň, ýa-da ýurtda üç ýazgynyň eýýäm maglumatlar bazasynda boljakdygyna ynanýarsyňyzmy?)) Barlap görerin, şonuň üçin subutnama: "A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 25Şuňa meňzeş bir zat. Taslamany täzeden ýerine ýetirseňiz, maglumat bazasy zerur wersiýa doly laýyk gelýändigi sebäpli, uçuş ýoly göçüp-gonup geçer.

Netije

Bu gezek “SpringBoot” bilen bilelikde maglumat bazasynyň göçüriş guralyna nädip düşünmelidigini we ulanylmagyny öwrendik. Bu maglumatlar, “Flyway” -y mysal hökmünde ulanyp, maglumat bazasynyň wersiýasyna gözegçilik guralynyň nämedigine düşünmek üçin zerurdyr. Dostlar, görkezen taslamamyň deslapky kody Github-da guramamyzda çap edildi . Mysal halasaňyz, oňa ýyldyz beriň , men işimiň peýdalydygyna we hakykatdanam dowam etmelidigine düşünerin. Däp bolşy ýaly, Github hasabyma ýazylmagy maslahat berýärin . Onuň üsti bilen ähli işlerimi açyk çeşmede we makalalarymyza hemişe goşulýan şol demo taslamalarynda alyp barýaryn. Hemmäňize okanyňyz üçin sag boluň. Indiki gezek anketamyzy ýazarys. Geljekde Docker hakda käbir zerur teoriýa bolar, ýöne ony tejribe bilen agyrlaşdyrarys.

peýdaly baglanyşyklar

Häzirki wagtda peýdaly baglanyşyklar kän däl. Ewgeniniň wideosyna üns beriň, hakykatdanam oňa mynasyp!
  1. Baharda taslamalary döretmek üçin web sahypasy
  2. Ewgeniý Borisow - Bahar gurluşykçysy
  3. Uçuş üçin bahar paslynda resminamalar

Tapgyryň ähli materiallarynyň sanawy bu makalanyň başynda.

Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION