مقال من سلسلة حول إنشاء مشروع Java (توجد روابط لمواد أخرى في النهاية). هدفه هو تحليل التقنيات الرئيسية، والنتيجة هي كتابة روبوت برقية. في هذا الجزء، نحاول إطلاق SpringBoot وFlyway. الحد الأدنى من النظرية، كما تريد))) نحذف المقارنة النهائية لـ Flyway/Liquibase لفترة زمنية غير محددة ونصل إلى صلب الموضوع. وحتى مع ذلك فقد استمرت بالفعل. لكي لا أصف Flyway مرتين، قررت إضافته على الفور إلى مشروع JRTB المستقبلي.
متعدد الأوجه ومتعدد الوحدات:
ماذا علينا أن نفعل كجزء من هذا؟
- قم بتشغيل تطبيق SpringBoot استنادًا إلى Maven.
- أضف Flyway هناك: لحسن الحظ، يتم دمجها بسهولة.
- أضف مخططًا للجداول الموجودة في قاعدة بيانات الأمثلة.
ما هو مسار الطيران
لاستخدام شيء ما، عليك أولاً معرفة ما هو ولماذا. Flyway هي أداة للتحكم في إصدار قاعدة البيانات. الكلمات معروفة جيدًا، ولكن بطريقة ما لم تتم إضافة الفهم، أليس كذلك؟ دعونا نحاول وصف المشكلة التي يحلها مسار الطيران. لنفترض أن لدينا مشروعًا. مثل كل شيء في عالمنا، فهو ليس مثاليًا، لذلك لم يكن من الممكن التخطيط ووضع النسخة النهائية للمشروع. في كل مرة تظهر بعض الفروق الدقيقة غير المحسوبة. يستخدم المشروع قاعدة بيانات في عمله. بالطبع، إذا تغير المشروع، فقد تتغير بنية قاعدة البيانات أيضًا. لنفترض أننا أضفنا حقلاً جديدًا لأحد الكيانات في مشروعنا. كيف افعلها؟- أضف هذا الحقل إلى كياننا، وقم بتحديث كل شيء حتى يعمل منطق الأعمال.
- تحديث قاعدة البيانات. الطريقة الوحيدة الممكنة هي القيام بذلك يدويًا. للقيام بذلك، تحتاج إلى الدخول وتسجيل البرنامج النصي SQL الضروري.
- ولكن إذا كان لدينا أكثر من مكان واحد حيث ننشر مشروعنا، فهل يجب القيام بذلك في كل واحد منهم؟
- وإذا أردنا العودة، كيف يمكننا أن نعرف بالضبط ما هي حالة بنية قاعدة البيانات الآن؟
- كيف سنتأكد من نجاح تغيير قاعدة البيانات؟
- كيف يمكنني الحصول على الفرصة لتتبع جميع تغييرات قاعدة البيانات التي حدثت في المشروع؟
قم بتشغيل SpringBoot + Flyway
ما هو التمهيد الربيع
ماذا نطلق؟... لفهم ماذا ولماذا نفعل، عليك أن تقرر ما هو SpringBoot. أولاً، دعونا نتحدث بسرعة (حسنًا، بسرعة كبيرة) عن الربيع . في الوقت الحالي، يعد هذا هو المعيار الصناعي الفعلي في تطوير تطبيقات الخادم في Java. معيار ماذا؟ كيف يمكنني أن أشرح لك هذا؟ الربيع هو الهيكل العظمي للتطبيق، والذي نرمي عليه بعد ذلك "اللحم" - منطق أعمالنا. بمساعدة Spring (سأستخدم فيما يلي ورق التتبع هذا حتى لا أضيع الوقت في تبديل اللغات:D)) يمنحنا الربيع بداية نبدأ منها في فعل كل شيء. إنه- هل تريد العمل مع قاعدة بيانات؟ هل تريد العلائقية؟ هل تريد غير العلائقية؟ نحن هنا مع بيانات الربيع.
- هل تريد العمل مع طلبات http؟ تفضل، Spring web (Spring MVC).
- هل تحتاج إلى حاوية لجميع الأشياء الخاصة بك في مكان واحد؟ وهنا الربيع الأساسية.
- هل تحتاج إلى إعداد الأمان في المشروع بحيث تكون هناك أدوار وتسلسل قيادي مختلف؟ أمن الربيع.
- فقط عندما كنت تعتقد أنه سيكون من الجميل أن يكون لديك شيء من هذا القبيل، اتضح أن الربيع لديه بالفعل ما تحتاجه، ويتكامل بسرعة وسهولة.
إطلاق SpringBoot
نظرًا لأننا فهمنا بالفعل ما هو Maven، فلنقم بإنشاء مشروع جديد يلبي احتياجاتنا. للقيام بذلك، ما عليك سوى الانتقال إلى موقع ويب تم إنشاؤه خصيصًا لهذا الأمر. يطلق عليه اسم Spring Initializr . هنا تحتاج إلى ملء واختيار ما تحتاجه:- أداة بناء المشروع هي Gradle أو Maven. كما ترون، لم يعد يتم ذكر النملة. يعد هذا تلميحًا جيدًا حول أدوات البناء التي تستحق وقتك.
- اللغة التي يمكنك الكتابة بها هي Java، Kotlin، Groovy. كل شيء بسيط هنا: جميعها تشبه JVM ويمكنها تشغيل كود Java بسهولة. بالمناسبة، الأمر يستحق النظر إلى Kotlin. لقد أصبح Groovy بصراحة غير مثير للاهتمام (كان هناك وقت تحولوا فيه إلى الأخاديد، لكنه مر بسرعة).
- إصدار الربيع... هنا عليك أن تفهم أن إصدارات الجزء الرئيسي من Spring ووحداته متسقة.
- بيانات المشروع. لقد وصفت بالفعل هذه الأشياء.
- نختار الأرشيف الذي سيتم جمعه - جرة أو حرب.
- حسنا، نسخة جافا المفضلة لدينا. وفي الآونة الأخيرة، كان هناك الكثير من هذه الإصدارات... لقد انتظروا لسنوات، والآن هناك اثنان في السنة.
- Maven - لم يكن من قبيل الصدفة أن تحدثنا معك عن هذا سابقًا.
- جافا هي عزيزتنا :D
- لنأخذ الإصدار 2.2.11. لماذا لا أحدث واحد؟ لأنه كلما كان أحدث، زادت احتمالية وجود بعض الأخطاء فيه. بالنسبة لنا، لا يهم الإصدار، لكن الإصدار الأقدم سيكون أكثر موثوقية. لذلك، نختار 2.2.11.
- المجموعة: com.github.javarushcommunity
- القطعة الأثرية: Springboot-flyway-demo
- الاسم: عرض SpringBoot + Flyway
- الوصف: يوضح المشروع التكامل بين SpringBoot وFlyway . (نعم، القدرة على كتابة التوثيق جزء مهم من التطوير :))
- اسم الحزمة: com.github.javarushcommunity.springbootflywaydemo . هنا سيقومون على الفور بإنشاء حزمة أساسية لنا مع فصل دراسي سيطلق تطبيقنا.
- التعبئة والتغليف: جرة
- جافا: 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
نقوم بتشغيل الطريقة الرئيسية مرة أخرى ونحصل على: الآن نحتاج إلى إضافة عملية ترحيل واحدة على الأقل. لإنشاء عملية ترحيل بشكل صحيح، يجب عليك أخذ القالب التالي: V<VERSION>__<NAME>.sql باستخدام هذا القالب، سنقوم بإنشاء ملف ترحيل باسم V00001__Create_country_table.sql في المجلد المناسب: /src/main/resources/ db.migration/ . لنقم بإنشاء جدول بلد فيه. لنأخذ النص من المقالة الثانية حول قاعدة البيانات . قبل البدء، دعنا ندخل وننشئ قاعدة بيانات للعمل: flyway_demo_db. دعونا نفعل ذلك من خلال MysqlWorkbench: الآن يمكننا تشغيل الطريقة الرئيسية مرة أخرى: كل شيء سار على ما يرام، ولكن بما أنه ليس لدينا أي شيء في المشروع بعد، فقد انتهى العمل. ومع ذلك، فمن الواضح من السجلات ( اقرأ ما هي السجلات ) ما يلي:
- تم الاتصال بقاعدة البيانات بنجاح.
- تم التحقق من صحة الهجرة وكل شيء على ما يرام.
- قامت Flyway بإنشاء جدول لإدارة عمليات الترحيل.
- وما بدأته الهجرة 00001 - كان إنشاء البلاد ناجحًا.
GO TO FULL VERSION