שילוב מגף קפיץ עם HSQLDB

1. סקירה כללית

Spring Boot מקל מאוד על עבודה עם מערכות מסדי נתונים שונות, ללא הטרחה של ניהול תלות ידני.

באופן ספציפי יותר, Starter של Spring Data JPA מספק את כל הפונקציונליות הנדרשת לשילוב חלק עם כמה מקור מידע יישומים.

במדריך זה, נלמד כיצד לשלב את Spring Boot עם HSQLDB.

2. התלות של Maven

כדי להדגים כמה קל לשלב את האביב עם HSQLDB, ניצור שכבת מאגר JPA פשוטה המבצעת פעולות CRUD בגופי לקוחות באמצעות מסד נתונים HSQLDB בזכרון..

הנה המתנע של Spring Boot בו נשתמש להפעלת שכבת מאגר המדגמים שלנו:

 org.springframework.boot spring-boot-starter-data-jpa 2.2.2.RELEASE org.hsqldb hsqldb 2.4.0 runtime 

שים לב שהכללנו גם את התלות ב- HSQLDB. בלעדיו, Spring Boot ינסה להגדיר אוטומטית את מקור מידע שעועית ובריכת חיבורים JDBC עבורנו דרך HikariCP.

כתוצאה מכך, אם לא נציין חוקי מקור מידע תלות שלנו pom.xml קובץ, נקבל כשל בבנייה.

בנוסף, בואו נדאג לבדוק את הגרסה האחרונה של spring-boot-starter-data-jpa במרכז מייבן.

3. חיבור למסד HSQLDB

לצורך מימוש שכבת מאגר ההדגמה שלנו, נשתמש במסד נתונים בזיכרון. עם זאת, ניתן לעבוד גם עם מאגרי מידע מבוססי קבצים. נחקור כל אחת משיטות אלה בסעיפים שלמטה.

3.1. הפעלת שרת HSQLDB חיצוני

בואו נסתכל כיצד להפעיל שרת HSQLDB חיצוני וליצור מסד נתונים מבוסס קבצים. התקנת HSQLDB והפעלת השרת היא פשוטה, באופן כללי.

להלן השלבים שעלינו לבצע:

  • ראשית, אנו מורידים את HSQLDB ונפתח אותו בתיקיה
  • מכיוון ש- HSQLDB אינו מספק בסיס נתונים המוגדר כברירת מחדל מהקופסה, אנו ניצור אחד בשם "Testdb" למטרות למשל
  • נפעיל שורת פקודה וננווט אל HSQLDB נתונים תיקיה
  • בתוך ה נתונים תיקיה, נפעיל את הפקודה הבאה:
    java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file.testdb --dbname0.testdb
  • הפקודה לעיל תפעיל את שרת HSQLDB ותיצור את מסד הנתונים שלנו שקובצי המקור שלו יאוחסנו ב- נתונים תיקיה
  • אנו יכולים לוודא שמסד הנתונים נוצר בפועל על ידי מעבר אל נתונים התיקיה, שאמורה להכיל קבוצה של קבצים הנקראים "Testdb.lck", "Testdb.log", "Testdb.properties", ו "Testdb.script" (מספר הקבצים משתנה בהתאם לסוג מסד הנתונים שאנחנו יוצרים)

לאחר הגדרת מסד הנתונים, עלינו ליצור חיבור אליו.

כדי לעשות זאת ב- Windowsבוא נעבור למסד הנתונים פַּח התיקיה והפעל את runManagerSwing.bat קוֹבֶץ. פעולה זו תפתח את המסך הראשוני של מנהל מסדי הנתונים של HSQLDB, שם נוכל להזין את אישורי החיבור:

  • סוּג: מנוע מסדי נתונים של HSQL
  • כתובת אתר:jdbc: hsqldb: hsql: // localhost / testdb
  • מִשׁתַמֵשׁ: "SA" (מנהל מערכת)
  • סיסמה: השאירו את השדה ריק

בלינוקס / יוניקס / מק, אנו יכולים להשתמש ב- NetBeans, Eclipse או IntelliJ IDEA כדי ליצור את חיבור מסד הנתונים באמצעות הכלים הוויזואליים של IDE, תוך שימוש באותם אישורים.

בכל אחד מהכלים הללו, פשוט ליצור טבלת מסדי נתונים על ידי ביצוע סקריפט SQL במנהל מסד הנתונים או בתוך ה- IDE.

לאחר חיבורנו, אנו יכולים ליצור לקוחות שולחן:

צור לקוחות שולחן (id INT לא NULL, שם VARCHAR (45), דוא"ל VARCHAR (45), מפתח ראשוני (ID)); 

בכמה צעדים פשוטים יצרנו מסד נתונים מבוסס קבצים HSQLDB המכיל לקוחות שולחן.

3.2. ה application.properties קוֹבֶץ

אם ברצוננו להתחבר למסד הנתונים מבוסס הקבצים הקודם מ- Spring Boot, להלן ההגדרות שעלינו לכלול ב- application.properties קוֹבֶץ:

spring.datasource.driver-class-name = org.hsqldb.jdbc.JDBCDriver spring.datasource.url = jdbc: hsqldb: hsql: // localhost / testdb spring.datasource.username = sa spring.datasource.password = spring.jpa .hibernate.ddl-auto = עדכון 

לחלופין, אם אנו משתמשים בבסיס נתונים בזיכרון, עלינו להשתמש באלה:

spring.datasource.driver-class-name = org.hsqldb.jdbc.JDBCDriver spring.datasource.url = jdbc: hsqldb: mem: testdb; DB_CLOSE_DELAY = -1 spring.datasource.username = sa spring.datasource.password = spring. jpa.hibernate.ddl-auto = צור 

שימו לב ל DB_CLOSE_DELAY = -1 הפרמטר צורף בסוף כתובת ה- URL של מסד הנתונים. כשעובדים עם מסד נתונים בזיכרון, עלינו לציין זאת, לכן יישום ה- JPA, שהוא מצב שינה, לא יסגור את מסד הנתונים בזמן שהיישום פועל.

4. ה צרכן יֵשׁוּת

עם הגדרות חיבור מסד הנתונים כבר מוגדרות, הבא עלינו להגדיר את שלנו צרכן יֵשׁוּת:

@Entity @Table (שם = "לקוחות") לקוח ציבורי {@Id @GeneratedValue (אסטרטגיה = GenerationType.AUTO) מזהה ארוך פרטי; שם מחרוזת פרטי; דוא"ל מחרוזת פרטי; // קונסטרוקטורים סטנדרטיים / סטרים / getters / toString} 

5. ה צרכן מאגר

בנוסף, עלינו ליישם שכבת התמדה דקה, המאפשרת לנו פונקציונליות בסיסית של CRUD צרכן גופי JPA.

אנו יכולים ליישם שכבה זו בקלות על ידי הרחבת ה- מאגר Crud מִמְשָׁק:

ממשק ציבורי @Repository CustomerRepository מרחיב את CrudRepository {}

6. בדיקת ה- צרכן מאגר

לבסוף, עלינו לוודא כי Spring Boot יכול להתחבר למעשה ל- HSQLDB. אנו יכולים להשיג זאת בקלות על ידי בדיקת שכבת המאגר בלבד.

נתחיל לבדוק את המאגר findById () ו מצא הכל() שיטות:

@RunWith (SpringRunner.class) @SpringBootTest מחלקה ציבורית CustomerRepositoryTest {@ CustomerRepository CustomerRepository פרטי; @ מבחן פומבי בטל כאשר FindingCustomerById_thenCorrect () {customerRepository.save (לקוח חדש ("ג'ון", "[דוא"ל מוגן]")); assertThat (customerRepository.findById (1L)). isInstanceOf (Optional.class); } @Test ציבורי בטל whenFindingAllCustomers_thenCorrect () {customerRepository.save (לקוח חדש ("ג'ון", "[דוא"ל מוגן]")); customerRepository.save (לקוח חדש ("ג'ולי", "[דוא"ל מוגן]")); assertThat (customerRepository.findAll ()). isInstanceOf (List.class); }} 

לבסוף, בואו נבדוק את לשמור() שיטה:

@ מבחן ציבורי בטל כאשרSavingCustomer_thenCorrect () {customerRepository.save (לקוח חדש ("בוב", "[מוגן באמצעות דוא"ל))); לקוח לקוח = customerRepository.findById (1L) .orElseGet (() -> לקוח חדש ("john", "[email protected]")); assertThat (customer.getName ()). isEqualTo ("בוב"); }

7. מסקנה

במאמר זה, למדנו כיצד לשלב את האביב עם HSQLDB, וכיצד להשתמש במסד נתונים מבוסס קבצים או בזיכרון בפיתוח שכבת מאגר JPA בסיסית.

כרגיל, כל דגימות הקוד המוצגות במאמר זה זמינות ב- GitHub.