جاوا پروجیکٹ بنانے کے سلسلے میں ایک مضمون (دیگر مواد کے لنکس آخر میں ہیں)۔ اس کا مقصد کلیدی ٹیکنالوجیز کا تجزیہ کرنا ہے، نتیجہ ٹیلی گرام بوٹ لکھنا ہے۔ اس حصے میں، ہم اسپرنگ بوٹ اور فلائی وے شروع کرنے کی کوشش کرتے ہیں۔ نظریہ کی کم از کم مقدار، جیسا کہ آپ چاہیں))) ہم Flyway/Liquibase کے حتمی موازنہ کو غیر معینہ مدت کے لیے چھوڑ دیتے ہیں اور نقطہ پر پہنچ جاتے ہیں۔ اور اس کے باوجود یہ پہلے ہی گھسیٹ چکا ہے۔ Flyway کو دو بار بیان نہ کرنے کے لیے، میں نے اسے فوری طور پر اپنے مستقبل کے JRTB پروجیکٹ میں شامل کرنے کا فیصلہ کیا۔
многоликий многомодульный:
ہمیں اس کے حصے کے طور پر کیا کرنے کی ضرورت ہے؟
- Maven پر مبنی اسپرنگ بوٹ ایپلیکیشن لانچ کریں۔
- وہاں فلائی وے شامل کریں: خوش قسمتی سے، وہ آسانی سے مربوط ہیں۔
- ان میزوں کے لیے ایک اسکیما شامل کریں جو ہمارے پاس مثال کے ڈیٹا بیس میں ہے۔
فلائی وے کیا ہے؟
کسی چیز کو استعمال کرنے کے لیے، آپ کو پہلے یہ معلوم کرنا ہوگا کہ وہ کیا ہے اور کیوں۔ فلائی وے ایک ڈیٹا بیس ورژن کنٹرول ٹول ہے۔ الفاظ تو معروف ہیں، لیکن کسی نہ کسی طرح سمجھ میں اضافہ نہیں ہوا، ہے نا؟ آئیے اس مسئلے کو بیان کرنے کی کوشش کرتے ہیں جو فلائی وے حل کرتا ہے۔ ہم کہتے ہیں کہ ہمارے پاس ایک پروجیکٹ ہے۔ ہماری دنیا کی ہر چیز کی طرح، یہ کامل نہیں ہے، اس لیے منصوبہ بندی کرنا اور منصوبے کا حتمی ورژن تیار کرنا ممکن نہیں تھا۔ ہر بار کچھ بے حساب باریکیاں ظاہر ہوتی ہیں۔ پروجیکٹ اپنے کام میں ڈیٹا بیس کا استعمال کرتا ہے۔ بلاشبہ، اگر پروجیکٹ تبدیل ہوتا ہے، تو ڈیٹا بیس کا ڈھانچہ بھی بدل سکتا ہے۔ ہم کہتے ہیں کہ ہم اپنے پروجیکٹ میں سے کسی ایک کے لیے ایک نیا فیلڈ شامل کرتے ہیں۔ یہ کیسے کرنا ہے؟- اس فیلڈ کو ہمارے ادارے میں شامل کریں، ہر چیز کو اپ ڈیٹ کریں تاکہ کاروباری منطق کام کرے۔
- ڈیٹا بیس کو اپ ڈیٹ کریں۔ واحد ممکنہ طریقہ اسے دستی طور پر کرنا ہے۔ ایسا کرنے کے لیے، آپ کو اندر جاکر ضروری ایس کیو ایل اسکرپٹ کو رجسٹر کرنے کی ضرورت ہے۔
- لیکن اگر ہمارے پاس ایک سے زیادہ جگہیں ہیں جہاں ہم اپنا پروجیکٹ لگاتے ہیں، تو کیا ان میں سے ہر ایک میں ایسا کرنے کی ضرورت ہے؟
- اور اگر ہم واپس جانا چاہتے ہیں تو ہمیں کیسے معلوم ہوگا کہ ڈیٹا بیس کا ڈھانچہ اب کس حالت میں ہے؟
- ہم کیسے یقین کریں گے کہ ڈیٹا بیس کی تبدیلی کامیاب تھی؟
- مجھے پروجیکٹ میں ہونے والی تمام ڈیٹا بیس تبدیلیوں کو ٹریک کرنے کا موقع کیسے مل سکتا ہے؟
Запускаем SpringBoot + Flyway
What такое Spring Boot
А что же такое запускаем?... Whatбы понять, что и зачем мы делаем, нужно определиться с тем, что такое SpringBoot. Вначале быстро поговорим (ну ооочень быстро) о Spring. На данный момент это де-факто промышленный стандарт в разработке serverных приложений на Java. Стандарт чего? Как вам так объяснить. Spring — это скелет applications, на который мы потом набрасываем “мясо” — нашу бизнес-логику. При помощи спринга (здесь и далее буду использовать эту кальку, чтобы не тратить время на переключение языка :D )) Спринг дает нам старт, с которого мы начинаем все делать. Он- Хочешь работать с базой данных? Хочешь с реляционной? Хочешь с нереляционной? Вот, пожалуйста, у нас Spring Data.
- Хочешь работать с http requestами? Вот тебе, пожалуйста, Spring web (Spring MVC).
- Тебе нужен контейнер для всех an objectов в одном месте? Вот Spring Core.
- Нужно настроить безопасность на проекте, да так, чтобы были разные роли и субординация? Spring Security.
- Ты только подумал о том, что хорошо бы иметь такую штуку, так окажется, что у Спринга уже есть то, что тебе нужно, и оно быстро и легко интегрируется.
Запускаем SpringBoot
Так How мы уже разбирались в том, что такое мавен, давайте создадим новый проект для наших нужд. Для этого просто нужно перейти на сайт, специально созданный для этого дела. Называется он Spring Initializr.Здесь нужно заполнить и выбрать необходимое:- Инструмент по сборке проекта — gradle or maven. Как видите, об Ant уже и не вспоминают. Это хорошая подсказка о том, Howим средствам сборки стоит уделить время.
- Язык, на котором можно писать — java, kotlin, groovy. Здесь все просто: все они JVM подобные и спокойно запускают Java code. К слову, стоит посмотреть и на Котлин. Груви уже откровенно стал неинтересным (было время, когда на груви переходor, но оно быстро прошло).
- Версию спринга… Здесь нужно понимать, что версии главной части спринга и его модулей согласованы.
- Данные о проекте. Я уже описывал эти вещи.
- Выбираем, в Howой архив будет собираться — Jar or War.
- Ну и версию джавы нашей любимой. А то в последнее время развелось этих версий… много) То ждали годами, а теперь по две в год.
- Maven — не зря же мы говорor с вами об этом ранее.
- Java — наша родимая :D
- Версию возьмем 2.2.11. Почему не самую новую? Потому что чем новее, тем больше шансов, что там могут быть Howие-то косяки. Для нас не принципиально, Howая именно version, а более старая будет надежнее. Поэтому выбираем 2.2.11.
- Group: com.github.javarushcommunity
- Artifact: springboot-flyway-demo
- Name: SpringBoot + Flyway Demo
- Description: Project demonstrates integration between SpringBoot and Flyway. (Да, умение писать documentацию — это важная часть разработки:))
- Package name: com.github.javarushcommunity.springbootflywaydemo. Здесь за нас сразу же создадут базовый пакет с классом, который запустит наше приложение.
- Packaging: Jar
- Java: 8. Не будем идти впереди паровоза и возьмем старую добрую восьмерку. Почему не 11? А зачем? Для нашего примера не вижу смысла.
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
Запускаем еще раз main метод и получаем:Теперь нужно добавить хотя бы одну миграцию. Whatбы правильно составить миграцию, нужно взять следующий шаблон: V<VERSION>__<NAME>.sql Руководствуясь им, создадим файл миграции с именем V00001__Create_country_table.sql в соответствующей папке: /src/main/resources/db.migration/. В ней создадим таблицу country. Скрипт возьмем из второй статьи о БД.Перед запуском зайдем и создадим БД для работы: flyway_demo_db. Сделаем это через MysqlWorkbench:Теперь-то можно запустить еще раз main метод:Все получилось, но так How у нас ничего еще нет в проекте, он закончил работу. Однако видно из логов (что такое логи — вот почитайте), что:
- Успешно подключorсь к БД.
- Прошла валидация миграции и с ней все ок.
- Flyway создал таблицу для управления миграциями.
- И то, что начала миграция 00001 — создание country прошла успешно.
Вывод
В этот раз мы научorсь худо-бедно понимать и использовать инструмент для миграции БД в связке со SpringBoot. Эта информация необходима для понимания того, что такое инструмент контроля версий баз данных на примере Flyway. Друзья, исходники проекта, который я показал, опубликованы у нас в организации на гитхабе. Если вам нравится пример, ставьте ему звезду, и я буду понимать, что моя работа полезна и ее реально стоит продолжать. Традиционно предлагаю подписаться на мой гитхаб аккаунт. Через него я веду всю свою работу по open source и все те демо проекты, которые неизменно сопровождают мои статьи. Всем спасибо за прочтение. В следующий раз уже будем писать наше приложение. Будет еще в будущем необходимая теория по докеру, но мы ее густо разбавим практикой.Полезные ссылки
Сегодня не так уж и много полезных ссылок. Обратите внимание на видео Евгения, оно действительно стоит того!- Сайт для создания проектов на спринге
- Евгений Борисов — Spring-построитель
- Документация в спринге по Flyway
GO TO FULL VERSION