JavaRush /בלוג Java /Random-HE /הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot....
Artur
רָמָה
Tallinn

הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot. חלק 1

פורסם בקבוצה
תרשה לי להתחיל ואומר שמאוד נהניתי מסדרת המאמרים של אלינור קרי בשם "REST Overview". להלן קישורים למאמרים אלו: הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 1בכלל, החלטתי לקחת את החופש ולהוסיף להם קצת. כלומר, ספר כיצד ליצור מסד נתונים ולחבר אותו ליישום זה. איפה להתחיל? כנראה ממסד הנתונים עצמו. החלטתי להשתמש ב-PostgreSQL כי אהבתי את ממשק הניהול הידידותי שלו. ראשית, עלינו להוריד את מתקין PostgreSQL, למשל מכאן: PostgreSQL Database Download אני לא אתאר את תהליך ההתקנה המלא, כי זה עשוי להשתנות בהתאם למערכת ההפעלה שלך. עם זאת, אני מציין שבתהליך תצטרך להמציא סיסמת מנהל עבור תפקיד ברירת המחדל של postgres (חשבון) ולהזין אותה 2 פעמים. לשם הפשטות, הגדרתי את הסיסמה ל-123 . כמובן שבפרויקטים אמיתיים יש צורך להמציא משהו יותר מסובך. הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 2לאחר מכן, תוכנית ההתקנה מבקשת ממך לבחור יציאה; השארתי אותה בערך ברירת המחדל שלה. הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 3המקום הושאר גם כברירת מחדל. הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 4מותקן, ואז פתח את ממשק המנהל pgAdmin . ייפתח דפדפן עם חלון קופץ בו נתבקש להזין את הסיסמה שנוצרה קודם לכן. הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 5כעת עלינו להגדיר את שפת הממשק. כדי לעשות זאת, לחץ על הגדר את pgAdmin --> שונות --> שפת משתמש , בחר את השפה הרצויה --> שמור וטען מחדש את דף הדפדפן . הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 6בפינה השמאלית העליונה של הדף, לחץ על שרת , החלון " התחבר לשרת " מופיע . הזן שוב את הסיסמה שלנו וסמן את התיבה שמור סיסמה כדי לא להזין אותה בכל פעם. הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 7נוכל להמשיך להשתמש בתפקיד המנהל עבור כל מסדי הנתונים, אבל עדיף ליצור תפקיד חדש, כי ייתכן שיש לנו מסדי נתונים רבים והרבה תוכנות שמשתמשות בהם. כדי לעשות זאת, בפינה השמאלית העליונה, לחץ על PostgreSQL 12 --> RMB על התחברות/תפקידי קבוצה --> צור --> התחברות/תפקיד קבוצתי הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 8 בחלון המוקפץ, בכרטיסייה " כללי ", הזן את שם התפקיד. קראתי לשורש התפקיד . הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 9בלשונית " הגדרה " אנו יוצרים סיסמה חדשה, השארתי 123 רק כדי לא להתבלבל. הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 10עבור ללשונית " זכויות " וסמן את כל הפריטים הדרושים. הגדרתי את כל הפריטים ל"כן ". לחץ על " שמור " הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 11אנו ממשיכים ליצירת מסד נתונים. לחץ לחיצה ימנית על "מסדי נתונים" --> צור --> מסד נתונים הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 12 בכרטיסייה " כללי ", צור את שם מסד הנתונים. תן לזה להיות, למשל, לקוחות . אנו מקצים את הבעלים ל- root , אותו יצרנו בשלב הקודם. הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 13על "הגדרה » בדוק שיש לנו ערכת קידוד UTF8 . לחץ על " שמור ". זהו, בסיס הנתונים שלנו נוצר (ריק לעת עתה). הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 14בשלב זה נוכל לסיים עם pgAdmin, כי... אנו ניצור טבלאות באופן תכנותי, אבל, לכל מקרה, אני אראה לך איך ליצור טבלה באופן ידני. הרחב את הלקוחות --> סכמות --> עץ ציבורי . לחץ לחיצה ימנית על טבלאות --> צור --> טבלה . הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 15חלון מוקפץ ייפתח. בכרטיסייה " כללי ", אנו מקצים שם לטבלה שלנו, למשל test_table , ומקצים את root כבעלים . הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 16עבור ללשונית " עמודות ", לחץ על " + " כדי ליצור עמודה חדשה. הזן את השם " id " ואת סוג הנתונים bigserial , המקביל לסוג Long ב-Java, אך עם הגדלה אוטומטית (בעת הוספת רשומה חדשה, המזהה יגדל אוטומטית באחד). אנו מסמנים ללא NULL כ"כן " , המפתח הראשי הוא גם " כן ". אנו יוצרים את העמודות " שם ", " אימייל " ו"טלפון "הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 17 באותו אופן . אנו בוחרים את תו סוג הנתונים משתנה , זה מתאים לסוג String , אבל מאפשר לך להגדיר את האורך המרבי. הגדרנו את אורך השם המרבי ל -200 תווים למילוי השם המלא. בעמודה אחת. הגדרנו את אורך הדוא"ל המרבי ל -254 תווים. מדוע למייל יש אורך מרבי כזה ניתן למצוא כאן . עבור מספר טלפון, בחר 20 תווים, זה אמור להספיק. קצת על מספרי טלפון: תפיסות שגויות של מתכנתים לגבי מספרי טלפון (הבר) אנו מסמנים ללא NULL בכל העמודות כ"כן " אם אנו רוצים שהנתונים האלה יהיו חובה. לחץ על " שמור ". זהו, הטבלה נוצרה. כדי למחוק את טבלת הבדיקות שלנו, לחץ עליה באמצעות לחצן העכבר הימני (בעץ) ו"מחק " , כי אנחנו כבר לא צריכים את זה, כי אנחנו ניצור טבלאות מהתוכנית שלנו. סגור את pgAdmin ועבור לתוכנית שלנו. בואו נפתח את IDEA עם הפרויקט שלנו. לחץ על מסד נתונים בעמודה הימנית של הממשק, לחץ על " + " כדי להוסיף את מסד הנתונים שלנו. מקור הנתונים הבא --> PostgreSQL . בחלון המוקפץ, הזינו בשדה User את תפקיד השורש שיצרנו קודם, ואת הסיסמה שלנוהוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 18הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 19123 בשדה הסיסמה . בשדה מסד נתונים אנו כותבים את שם מאגר הלקוחות שלנו . אנו לוחצים על הכפתור Test Connection , ואם אנו רואים סימון ירוק מתחתיו, אז הכל בסדר, ואנחנו לוחצים על הכפתור OK . הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 20זהו, התחברנו למסד הנתונים, עכשיו נעבור לקובץ pom.xml ונוסיף תלויות. כדי לעבוד עם מסד נתונים של ORM :
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
כדי ליצור בקר REST:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
עבור שרת Tomcat:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
עבור PostgreSQL:
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>
כעת, לאחר שסיימנו את pom.xml, נעבור לתיקיית המשאבים ונמלא את קובץ application.properties באופן הבא:
spring.datasource.url=jdbc:postgresql://localhost:5432/customers
spring.datasource.username=root
spring.datasource.password=123

spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database=postgresql
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect
כאן הכנסנו את כתובת ה-URL של מסד הנתונים שלנו, סיפקנו את הכניסה והסיסמה עבורו, רשמנו את הדרייבר עבור PostgreSQL, ציינו שנשתמש בסוג הנתונים PostgreSQL, וציינו את הניב עבור Hibernate. לאחר מכן, בואו ניצור ספרייה חדשה בשם מסד נתונים באותה תיקיית משאבים . בספרייה זו ניצור 2 קבצים: initDB.sql ו- populateDB.sql . הראשון יהיה אחראי על יצירת טבלאות, השני יהיה אחראי על מילוין בתחילה. בואו נפתח את initDB.sql ונראה פס ירוק בחלק העליון שאומר שהדיאלקט של SQL אינו מוגדר . זה אומר שלא בחרנו ניב SQL עבור הפרויקט שלנו (ויש כמה כאלה). לחץ על הצד הימני של אותה רצועה על הכיתוב שנה ניב ל... . בחלון המוקפץ, לחץ על Project SQL Dialect , ומכיוון שמסד הנתונים שלנו הוא PostgreSQL , אנו בוחרים את הניב באותו שם. לחץ על אישור הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot.  חלק 1 - 21 בוא נעבור למילוי קבצי ה-SQL שלנו . תחילה נמלא את הקובץ initDB.sql :
CREATE TABLE IF NOT EXISTS clients
(
    id    BIGSERIAL PRIMARY KEY ,
    name  VARCHAR(200) NOT NULL ,
    email VARCHAR(254) NOT NULL ,
    phone VARCHAR(20)  NOT NULL
);
אם לאחר מילוי הקובץ, כמה מילים מלבד לקוחות כתובות בגופן לבן, לחץ לחיצה ימנית בתוך הטקסט ובחר שנה דיאלקט --> PostgreSQL שוב . כפי שבטח כבר הבנתם, אלו אותם נתונים שמילאנו בעת יצירת טבלת הבדיקה באופן ידני. כאן הם מעוצבים בניב PostgreSQL של ​​שפת SQL. כעת נמלא את הקובץ populateDB.sql :
INSERT INTO clients VALUES
(1, 'Vassily Petrov', 'vpetrov@jr.com', '+7 (191) 322-22-33)'),
(2, 'Pjotr Vasechkin', 'pvasechkin@jr.com', '+7 (191) 223-33-22)');
אם השם של טבלת הלקוחות שלך כתוב באותיות אדומות, אז זה בסדר. הנקודה היא שעדיין לא יצרנו את הטבלה הזו, ו-IDEA עדיין לא מזהה אותה. על מנת ליצור ולאכלס את הטבלה, עלינו לחזור לקובץ application.properties ולהוסיף שם את שלוש השורות הבאות:
spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
spring.datasource.data=classpath*:database/populateDB.sql
בשורות אלו אנו אומרים שאנו רוצים לאתחל את מסד הנתונים באופן פרוגרמטי ולציין באילו קבצים יש להשתמש לשם כך. לאחר מכן, עבור אל השיטה הראשית של האפליקציה שלנו והפעל אותה . לאחר מכן, עבור אל pgAdmin --> שרתים --> PostgreSQL 12 --> מסדי נתונים --> לקוחות --> סכמות --> ציבוריות , לחץ לחיצה ימנית על " טבלאות ", " עדכון ". אם הכל הלך כשורה, אז אנחנו רואים את טבלת הלקוחות שיצרנו . לאחר מכן, חזור לקובץ application.properties והגיב החוצה מהשורה.
spring.datasource.data=classpath*:database/populateDB.sql
כלהלן:
spring.datasource.url=jdbc:postgresql://localhost:5432/customers
spring.datasource.username=root
spring.datasource.password=123

spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database=postgresql
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect

spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
#spring.datasource.data=classpath*:database/populateDB.sql
אם לא נעשה זאת, אז בפעם הבאה שנפעיל את התוכנית נקבל את השגיאה הבאה: org.postgresql.util.PSQLException: ERROR: ערך מפתח כפול מפר את האילוץ הייחודי "clients_pkey" . זה קורה כי כבר מילאנו את השדות עם id 1 ו -2 בטבלה (אפילו במהלך ההשקה הראשונה). בטבלה שיצרנו, השדה id מצוין כ- bigserial , המתאים לסוג Long ב-Java. עם זאת, בתוכנית שלנו הסוג עבור שדה זה הוא מספר שלם . החלטתי להראות כיצד להשתמש ב-Long (BIGSERIAL) כי יש לו טווח גדול יותר מ-Integer. העובדה היא שבטבלאות, שדה המיועד כמפתח ראשי יכול לשמש לא רק לאחסון מזהי משתמש , אלא גם לאחסון אינדקסים של מגוון רחב של נתונים, ומספר הרשומות הללו יכול לחרוג מהערך המקסימלי של מספר שלם. לדוגמה, אם התוכנית שלנו לוקחת כמה מדידות כל שנייה וכותבת את הנתונים לטבלה. על מנת לשכתב את המחלקות שלנו לשימוש בסוג הנתונים Long, עלינו לשנות את הסוג מ-Integer ל-Long בכל המחלקות והשיטות המשתמשות בשדה id . לא נעשה זאת, מכיוון שהתוכנית נכתבה במקור על ידי המחבר עבור סוג id Integer, מה שאומר שזה הגיוני. כדי להמשיך, הבה נסיר שוב את טבלת הלקוחות שיצרנו ממסד הנתונים שלנו, אך כעת ננסה לעשות זאת באופן פרוגרמטי ולא ידני. כדי לעשות זאת, הערה את הקוד שלנו בקובץ initDB.sql והוסף שורה אחת:
-- CREATE TABLE IF NOT EXISTS clients
-- (
--     id    BIGSERIAL PRIMARY KEY ,
--     name  VARCHAR(200) NOT NULL ,
--     email VARCHAR(254) NOT NULL ,
--     phone VARCHAR(20)  NOT NULL
-- );
DROP TABLE IF EXISTS clients
בואו נפעיל את התוכנית, עבור אל pgAdmin , לחץ לחיצה ימנית על " טבלאות " ( בבסיס הנתונים של הלקוחות שלנו ) - -> " עדכן ", ונראה שהטבלה שלנו נעלמה. NB! היזהר בעת שימוש בפקודה זו, אחרת אתה מסתכן באובדן כל הנתונים שהיו לך בטבלה! בוא נחזור לקובץ initDB.sql ונכתוב אותו מחדש באופן הבא:
CREATE TABLE IF NOT EXISTS clients
(
    id    SERIAL PRIMARY KEY ,
    name  VARCHAR(200) NOT NULL ,
    email VARCHAR(254) NOT NULL ,
    phone VARCHAR(50)  NOT NULL
);
כאן שינינו את סוג המזהה ל- SERIAL , התואם את סוג המספר השלם בו אנו משתמשים עבור שדה המזהה בתוכנית שלנו. בנוסף, האורך המרבי של שדה הטלפון הוגדל כך שנוכל להשתמש באופן חופשי ברווחים ובתווים מיוחדים (סוגריים, מקפים וכו') בכתיבתו. מספר הספרות המקסימלי במספר טלפון הוא כיום 18 ספרות (אם זכרוני אינו מטעה אותי). הגדרתי את הגודל ל-50 תווים כדי להיות בטוח. בוא נלך לקובץ application.properties ונבטל את ההערה לשורה:
spring.datasource.data=classpath*:database/populateDB.sql
בוא נריץ את התוכנית שלנו, עבור אל pgAdmin, נבדוק שהטבלה שלנו נוצרה, ונגיר את השורה הזו בחזרה.
#spring.datasource.data=classpath*:database/populateDB.sql
כאן כנראה אסיים את החלק הראשון של המאמר. אני מקווה שאהבתם, כתבו תגובות (גם אם לא אהבתם). בחלק השני, נשכתב מחדש את השיעורים שלנו כדי שיוכלו לעבוד עם מסדי נתונים אמיתיים. המשך: הוספת מסד נתונים PostgreSQL לשירות RESTful ב-Spring Boot. חלק 2 UPD תודה למנחים על תיקון התמונות ועיצוב הטקסט שלי!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION