מאמר מסדרה על יצירת פרויקט ג'אווה (קישורים לחומרים אחרים נמצאים בסוף). המטרה שלו היא לנתח טכנולוגיות מפתח, התוצאה היא כתיבת בוט טלגרם. בחלק זה, אנו מנסים להשיק את SpringBoot ו-Flyway. הכמות המינימלית של תיאוריה, כרצונכם))) אנו משמיטים את ההשוואה הסופית של Flyway/Liquibase לתקופת זמן בלתי מוגבלת ומגיעים לנקודה. וגם ככה זה כבר נגרר. כדי לא לתאר את Flyway פעמיים, החלטתי להוסיף אותו מיד לפרויקט ה-JRTB העתידי שלנו.
רב פנים, רב מודולרי:
מה אנחנו צריכים לעשות במסגרת זה?
- הפעל יישום SpringBoot המבוסס על Maven.
- הוסף שם את Flyway: למרבה המזל, הם משולבים בקלות.
- הוסף סכמה לטבלאות שיש לנו במסד הנתונים לדוגמה.
מה זה מסלול תעופה
כדי להשתמש במשהו, תחילה עליך להבין מהו ומדוע. Flyway הוא כלי בקרת גרסאות של מסד נתונים. המילים ידועות, אבל איכשהו ההבנה לא נוספה, נכון? בואו ננסה לתאר את הבעיה שמסלול הטיסה פותר. נניח שיש לנו פרויקט. כמו כל דבר בעולם שלנו, זה לא מושלם ולכן לא ניתן היה לתכנן ולעצב את הגרסה הסופית של הפרויקט. בכל פעם מופיעים ניואנסים מסויימים לא מובנים. הפרויקט משתמש במסד נתונים בעבודתו. כמובן שאם הפרויקט ישתנה, מבנה מסד הנתונים עשוי להשתנות גם הוא. נניח שאנו מוסיפים שדה חדש עבור אחד מהישויות בפרויקט שלנו. איך לעשות את זה?- הוסף את השדה הזה לישות שלנו, עדכן הכל כך שהלוגיקה העסקית תעבוד.
- עדכן את מסד הנתונים. הדרך היחידה האפשרית היא לעשות זאת באופן ידני. כדי לעשות זאת, עליך להיכנס ולרשום את סקריפט ה-sql הדרוש.
- אבל אם יש לנו יותר ממקום אחד שבו אנו פורסים את הפרויקט שלנו, האם זה צריך להיעשות בכל אחד מהם?
- ואם אנחנו רוצים לחזור אחורה, איך נדע בדיוק באיזה מצב נמצא כעת מבנה מסד הנתונים?
- כיצד נוכל להיות בטוחים ששינוי מסד הנתונים הצליח?
- כיצד אוכל לקבל את ההזדמנות לעקוב אחר כל השינויים במסד הנתונים שהתרחשו בפרויקט?
הפעל את SpringBoot + Flyway
מה זה Spring Boot
מה אנחנו משיקים?... כדי להבין מה ולמה אנחנו עושים, צריך להחליט מה זה SpringBoot. ראשית, בואו נדבר במהירות (טוב, מהר מאוד) על אביב . נכון לעכשיו, זהו תקן התעשייה דה פקטו בפיתוח יישומי שרת ב-Java. תקן של מה? איך אני יכול להסביר לך את זה? האביב הוא השלד של היישום, עליו אנו זורקים את ה"בשר" - ההיגיון העסקי שלנו. בעזרת אביב (להלן אשתמש בנייר המעקב הזה כדי לא לבזבז זמן במעבר שפה:D)) האביב נותן לנו התחלה שממנה אנחנו מתחילים לעשות הכל. הוא- האם אתה רוצה לעבוד עם מסד נתונים? אתה רוצה יחסים? אתה רוצה לא רציונלי? הנה אנחנו עם Spring Data.
- האם אתה רוצה לעבוד עם בקשות http? הנה, רשת אביב (Spring MVC).
- האם אתה צריך מיכל לכל החפצים שלך במקום אחד? הנה Spring Core.
- האם צריך להגדיר אבטחה בפרויקט כך שיהיו תפקידים ושרשרת פיקוד שונים? אבטחת אביב.
- בדיוק כשחשבתם שיהיה נחמד שיהיה כזה דבר, מסתבר שבאביב כבר יש את מה שאתם צריכים, והוא משתלב במהירות ובקלות.
השקת SpringBoot
מכיוון שכבר הבנו מה זה Maven, בואו ניצור פרויקט חדש לצרכים שלנו. כדי לעשות זאת, אתה רק צריך ללכת לאתר שנוצר במיוחד לעניין זה. זה נקרא Spring Initializr . כאן אתה צריך למלא ולבחור את מה שאתה צריך:- כלי בניית הפרויקט הוא מדורג או מיומן. כפי שאתה יכול לראות, נמלה אפילו לא מוזכרת. זהו רמז טוב לגבי אילו כלי בנייה שווים את הזמן שלך.
- השפה שאתה יכול לכתוב בה היא java, kotlin, groovy. הכל פשוט כאן: כולם דמויי JVM ומריצים בקלות קוד Java. אגב, שווה להסתכל על קוטלין. גרובי למען האמת הפך ללא מעניין (היתה תקופה שהם עברו לגרוב, אבל זה עבר מהר).
- גרסת אביב... כאן אתה צריך להבין שהגרסאות של החלק העיקרי של Spring והמודולים שלו עקביים.
- נתוני הפרויקט. כבר תיארתי את הדברים האלה.
- אנו בוחרים איזה ארכיון ייאסף - צנצנת או מלחמה.
- ובכן, גרסת ג'אווה של המועדפת שלנו. ולאחרונה היו הרבה מהגרסאות האלה... הם חיכו שנים, ועכשיו יש שתיים בשנה.
- מייבן - לא בכדי דיברנו איתך על זה קודם לכן.
- ג'אווה היא יקירתנו :D
- ניקח את גרסה 2.2.11. למה לא החדש ביותר? כי ככל שהוא חדש יותר, כך גדל הסיכוי שייתכן שיש שם כמה באגים. עבורנו, זה לא משנה איזו גרסה, אבל הישנה יותר תהיה אמינה יותר. לכן, אנו בוחרים ב-2.2.11.
- קבוצה: com.github.javarushcommunity
- חפץ: springboot-flyway-demo
- שם: SpringBoot + Flyway Demo
- תיאור: הפרויקט מדגים אינטגרציה בין 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