Java loyihasini yaratish haqidagi turkum maqola (boshqa materiallarga havolalar oxirida). Uning maqsadi - asosiy texnologiyalarni tahlil qilish, natijada telegram botini yozish. Ushbu qismda biz SpringBoot va Flywayni ishga tushirishga harakat qilamiz. Nazariyaning minimal miqdori, siz xohlaganingizdek))) Biz Flyway/Liquibase-ni noma'lum muddatga yakuniy taqqoslashni o'tkazib yuboramiz va nuqtaga o'tamiz. Va shunga qaramay, u allaqachon davom etdi. Flyway-ni ikki marta tasvirlamaslik uchun men uni kelajakdagi JRTB loyihamizga darhol qo'shishga qaror qildim.
ko'p qirrali, ko'p modulli:
Buning bir qismi sifatida nima qilishimiz kerak?
- Maven asosidagi SpringBoot dasturini ishga tushiring.
- U erda Flyway-ni qo'shing: xayriyatki, ular osongina birlashtiriladi.
- Misol ma'lumotlar bazasida mavjud bo'lgan jadvallar uchun sxema qo'shing.
Flyway nima
Biror narsani ishlatish uchun avvalo nima ekanligini va nima uchun ekanligini aniqlashingiz kerak. Flyway - ma'lumotlar bazasi versiyasini boshqarish vositasi. So'zlar ma'lum, lekin qandaydir tushunish qo'shilmagan, to'g'rimi? Keling, flyway hal qiladigan muammoni tasvirlashga harakat qilaylik. Aytaylik, bizda loyiha bor. Bizning dunyomizdagi hamma narsa kabi, u mukammal emas, shuning uchun loyihaning yakuniy versiyasini rejalashtirish va tuzish mumkin emas edi. Har safar ma'lum hisobga olinmagan nuanslar paydo bo'ladi. Loyiha o'z ishida ma'lumotlar bazasidan foydalanadi. Albatta, agar loyiha o'zgarsa, ma'lumotlar bazasi tuzilishi ham o'zgarishi mumkin. Aytaylik, loyihamizdagi ob'ektlardan biri uchun yangi maydon qo'shamiz. Buni qanday qilish kerak?- Ushbu maydonni bizning tashkilotimizga qo'shing, biznes mantig'i ishlashi uchun hamma narsani yangilang.
- Ma'lumotlar bazasini yangilang. Mumkin bo'lgan yagona usul - buni qo'lda qilish. Buning uchun siz kirishingiz va kerakli sql skriptini ro'yxatdan o'tkazishingiz kerak.
- Ammo agar bizda bir nechta loyihamiz mavjud bo'lsa, ularning har birida buni qilish kerakmi?
- va agar biz orqaga qaytmoqchi bo'lsak, ma'lumotlar bazasi strukturasi hozir qanday holatda ekanligini qanday bilamiz?
- Ma'lumotlar bazasi o'zgarishi muvaffaqiyatli bo'lganiga qanday ishonch hosil qilishimiz mumkin?
- Loyihada sodir bo'lgan barcha ma'lumotlar bazasi o'zgarishlarini kuzatish imkoniyatini qanday olishim mumkin?
SpringBoot + Flyway-ni ishga tushiring
Spring Boot nima
Biz nimani ishga tushirmoqdamiz?... Nima va nima uchun qilayotganimizni tushunish uchun SpringBoot nima ekanligini hal qilishingiz kerak. Birinchidan, tez (yaxshi, juda tez) Bahor haqida gapiraylik . Hozirgi vaqtda bu Java-da server ilovalarini ishlab chiqishda de-fakto sanoat standartidir. Nimaning standarti? Buni sizga qanday tushuntira olaman? Bahor - bu dasturning skeleti bo'lib, biz unga "go'sht" ni tashlaymiz - bizning biznes mantiqimiz. Bahorning yordami bilan (bundan keyin men tillarni o'zgartirishga vaqtni behuda sarf qilmaslik uchun men ushbu kuzatuv qog'ozidan foydalanaman: D)) Bahor bizga hamma narsani qilishni boshlaydigan boshlanishni beradi. Bu- Ma'lumotlar bazasi bilan ishlashni xohlaysizmi? Siz munosabatlarni xohlaysizmi? Siz aloqasiz bo'lishni xohlaysizmi? Mana biz Spring Data bilan.
- http so'rovlari bilan ishlashni xohlaysizmi? Mana, Spring web (Spring MVC).
- Sizga bir joyda barcha ob'ektlaringiz uchun konteyner kerakmi? Mana bahor yadrosi.
- Turli rollar va buyruqlar zanjiri mavjud bo'lishi uchun loyihada xavfsizlikni o'rnatishingiz kerakmi? Bahor xavfsizligi.
- Bunday narsaga ega bo'lish yaxshi bo'ladi deb o'ylaganingizda, bahorda sizga kerak bo'lgan narsa allaqachon mavjud va u tez va oson birlashadi.
SpringBoot ishga tushirilmoqda
Maven nima ekanligini allaqachon tushunganimiz uchun keling, ehtiyojlarimiz uchun yangi loyiha yarataylik. Buni amalga oshirish uchun siz ushbu masala uchun maxsus yaratilgan veb-saytga kirishingiz kerak. U Spring Initializr deb ataladi . Bu erda siz to'ldirishingiz va kerakli narsani tanlashingiz kerak:- Loyihani yaratish vositasi gradle yoki maven hisoblanadi. Ko'rib turganingizdek, chumoli endi tilga olinmaydi. Bu qaysi qurilish asboblari vaqtingizga arziydiganligi haqida yaxshi maslahat.
- Siz yozishingiz mumkin bo'lgan til - java, kotlin, groovy. Bu erda hamma narsa oddiy: ularning barchasi JVM-ga o'xshaydi va Java kodini osongina boshqaradi. Aytgancha, Kotlinga qarashga arziydi. Ochig'ini aytganda, Groovy qiziqsiz bo'lib qoldi (ular trubalarga o'tgan vaqtlari bor edi, lekin u tezda o'tib ketdi).
- Bahor versiyasi ... Bu erda siz Bahorning asosiy qismi va uning modullarining versiyalari mos kelishini tushunishingiz kerak.
- Loyiha ma'lumotlari. Men bu narsalarni allaqachon tasvirlab berganman.
- Qaysi arxiv to'planishini tanlaymiz - Jar yoki War.
- Xo'sh, bizning sevimli dasturimizning Java versiyasi. Va yaqinda bunday versiyalar juda ko'p bo'ldi ... Ular yillar davomida kutishdi, endi esa yiliga ikkitasi bor.
- Maven - bu haqda avval siz bilan gaplashganimiz bejiz emas.
- Java bizning azizim: D
- Keling, 2.2.11 versiyasini olaylik. Nega eng yangisi emas? Chunki u qanchalik yangi bo'lsa, u erda xatolar bo'lishi ehtimoli shunchalik yuqori bo'ladi. Biz uchun qaysi versiya muhim emas, lekin eskisi ishonchliroq bo'ladi. Shuning uchun biz 2.2.11 ni tanlaymiz.
- Guruh: com.github.javarushcommunity
- Artifakt: springboot-flyway-demo
- Nomi: SpringBoot + Flyway demo
- Tavsif: Loyiha SpringBoot va Flyway o'rtasidagi integratsiyani namoyish etadi . (Ha, hujjatlarni yozish qobiliyati rivojlanishning muhim qismidir :))
- Paket nomi: com.github.javarushcommunity.springbootflywaydemo . Bu erda ular darhol biz uchun dasturimizni ishga tushiradigan sinf bilan asosiy paketni yaratadilar.
- Qadoqlash: banka
- Java: 8. Keling, lokomotivdan oldinga bormaylik va eski sakkizlikni olmaymiz. Nega 11 emas? Nima sababdan? Bizning misolimiz uchun men nuqtani ko'rmayapman.
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
Biz yana asosiy usulni ishga tushiramiz va olamiz: Endi kamida bitta migratsiya qo'shishimiz kerak. Migratsiyani to‘g‘ri yaratish uchun quyidagi shablonni olishingiz kerak: V<VERSION>__<NAME>.sql Ushbu shablondan foydalanib, tegishli papkada V00001__Create_country_table.sql nomli migratsiya faylini yaratamiz : /src/main/resources/ db.migration/ . Unda mamlakat jadvalini tuzamiz. Keling, ma'lumotlar bazasi haqidagi ikkinchi maqoladan skriptni olaylik . Boshlashdan oldin, keling, ish uchun ma'lumotlar bazasini yarataylik: flyway_demo_db. Buni MysqlWorkbench orqali amalga oshiramiz: Endi biz asosiy usulni yana ishga tushirishimiz mumkin: Hammasi amalga oshdi, lekin bizda hali loyihada hech narsa yo'qligi sababli u ishlay boshladi. Biroq, jurnallardan ( jurnallar nima ekanligini o'qing ) aniq:
- Ma'lumotlar bazasiga muvaffaqiyatli ulandi.
- Migratsiya tasdiqlandi va hammasi joyida.
- Flyway migratsiyalarni boshqarish uchun jadval yaratdi.
- Va qanday migratsiya 00001 boshlandi - mamlakatning yaratilishi muvaffaqiyatli bo'ldi.
Xulosa
Bu safar biz SpringBoot bilan birgalikda ma'lumotlar bazasini ko'chirish vositasini tushunish va undan foydalanishni o'rgandik. Ushbu ma'lumot Flyway misolida ma'lumotlar bazasi versiyasini boshqarish vositasi nima ekanligini tushunish uchun zarur. Do'stlar, men ko'rsatgan loyihaning manba kodi bizning tashkilotimizda Github-da nashr etilgan . Agar sizga misol yoqsa, unga yulduzcha qo'ying va men ishim foydali va haqiqatan ham davom ettirishga arziydiganligini tushunaman. An'anaga ko'ra, men Github hisobimga obuna bo'lishni taklif qilaman . U orqali men barcha ishimni ochiq manbalar va maqolalarimga doimo hamroh bo'ladigan barcha demo loyihalar ustida olib boraman. O'qiganingiz uchun barchaga rahmat. Keyingi safar arizamizni yozamiz. Kelajakda Docker-da kerakli nazariya bo'ladi, ammo biz uni amaliyot bilan juda suyultiramiz.foydali havolalar
Bugungi kunda juda ko'p foydali havolalar mavjud emas. Evgeniyning videosiga e'tibor bering, bu haqiqatan ham bunga arziydi!- Bahorda loyihalar yaratish uchun veb-sayt
- Evgeniy Borisov - bahor quruvchisi
- Flyway uchun bahorda hujjatlar
GO TO FULL VERSION