logo

מסד נתונים של Spring Boot H2

מהו מסד הנתונים בזיכרון

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

מאגרי המידע הנפוצים בזיכרון הם H2, HSQLDB (מסד נתונים HyperSQL) , ו דרבי אפאצ'י. זה יוצר את התצורה באופן אוטומטי.

ג'אווה מחולל מספרים אקראיים

התמדה לעומת מסד נתונים בזיכרון

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

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

מהו מסד הנתונים של H2

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

יתרונות

  • אפס תצורה
  • זה קל לשימוש.
  • זה קל משקל ומהיר.
  • הוא מספק תצורה פשוטה למעבר בין מסד נתונים אמיתי למסד נתונים בזיכרון.
  • הוא תומך ב-SQL ו-JDBC API סטנדרטיים.
  • הוא מספק קונסולת אינטרנט לתחזוקה במסד הנתונים.

הגדר את מסד הנתונים של H2

אם ברצוננו להשתמש בבסיס הנתונים H2 באפליקציה, עלינו להוסיף את התלות הבאה בקובץ pom.xml:

 com.h2database h2 runtime 

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

 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 

בתוך ה spring.datasource.url תכונה, מ הוא שמו של מסד נתונים בזיכרון ו testdb הוא השם של הסכימה ש-H2 מספק, כברירת מחדל. אנחנו יכולים גם להגדיר סכימה ומסד נתונים משלנו. שם המשתמש המוגדר כברירת מחדל הוא עַל והסיסמה הריקה מציינת an ריק סיסמה. אם ברצוננו לשנות את שם המשתמש והסיסמה, נוכל לעקוף את הערכים הללו.

המשיכו את הנתונים במסד הנתונים של H2

אם אנו רוצים להתמיד בנתונים במסד הנתונים של H2, עלינו לאחסן נתונים בקובץ. כדי להשיג את אותו הדבר, עלינו לשנות את מאפיין כתובת ה-URL של מקור הנתונים.

 #persist the data spring.datasource.url=jdbc:h2:file:/data/sampledata spring.datasource.url=jdbc:h2:C:/data/sampledata 

בנכס הנ'ל, ה נתונים לדוגמה הוא שם קובץ.

צור סכימה ואכלוס נתונים

נוכל להגדיר סכמה על ידי יצירת א SQL קובץ ב- מַשׁאָב תיקיה (src/main/resource).

schema.sql

 DROP TABLE IF EXISTS CITY; CREATE TABLE CITY ( City_code INT AUTO_INCREMENT PRIMARY KEY, city_name VARCHAR(50) NOT NULL, city_pincode INT(8) NOT NULL ); 

נוכל לאכלס נתונים בטבלה על ידי יצירת א SQL קובץ ב- מַשׁאָב תיקיה (src/main/resource).

data.sql

 INSERT INTO CITY VALUES (11, 'Delhi', 110001); INSERT INTO CITY VALUES (12, 'Kanpur', 208001); INSERT INTO CITY VALUES (13, 'Lucknow', 226001); 

Spring Boot מרים אוטומטית את data.sql קובץ והפעל אותו כנגד מסד הנתונים H2 במהלך הפעלת היישום.

קונסולת H2

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

 #enabling the H2 console spring.h2.console.enabled=true 

לאחר שהפעלנו את מסוף H2, כעת נוכל לגשת למסוף H2 בדפדפן על ידי הפעלת כתובת האתר http://localhost:8080/h2-console. האיור הבא מציג את תצוגת המסוף של מסד הנתונים H2.

מסד נתונים של Spring Boot H2

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

קפיץ מגף H2 דוגמה

בואו נגדיר אפליקציית Spring Boot עם מסד הנתונים H2.

שלב 1: פתח את Spring Initializr http://start.spring.io.

שלב 2: בחר את גרסת Spring Boot 2.3.0.M1.

שלב 2: ספק את קְבוּצָה שֵׁם. סיפקנו com.javatpoint.

שלב 3: ספק את חפץ תְעוּדַת זֶהוּת. סיפקנו spring-boot-h2-database-example.

שלב 5: הוסף את התלות Spring Web, Spring Data JPA, ו מסד נתונים H2.

שלב 6: הקלק על ה לִיצוֹר לַחְצָן. כאשר אנו לוחצים על כפתור צור, הוא עוטף את הפרויקט ב-a קַנקַן קובץ ומוריד אותו למערכת המקומית.

מסד נתונים של Spring Boot H2

שלב 7: לחלץ קובץ Jar והדבק אותו בסביבת העבודה STS.

שלב 8: יְבוּא את תיקיית הפרויקט לתוך STS.

קובץ -> ייבוא ​​-> פרויקטים קיימים של Maven -> עיון -> בחר בתיקייה spring-boot-h2-database-example -> סיום

לוקח קצת זמן לייבא.

שלב 9: צור חבילה עם השם com.javatpoint.model בתיקייה src/main/java.

שלב 10: צור כיתת מודל בחבילה com.javatpoint.model. יצרנו כיתת מודל עם השם סטוּדֶנט. בשיעור הספרים, עשינו את הפעולות הבאות:

  • הגדר ארבעה משתנים מזהה, גיל, שם, ו
  • צור Getters ו-Setters.
    לחץ באמצעות לחצן העכבר הימני על הקובץ -> מקור -> צור Getters and Setters.
  • סמן את הכיתה בתור יֵשׁוּת באמצעות ההערה @יֵשׁוּת.
  • סמן את הכיתה בתור שולחן שם באמצעות ההערה @שולחן.
  • הגדר כל משתנה כ טור באמצעות ההערה @טור.

Student.java

 package com.javatpoint.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; //mark class as an Entity @Entity //defining class name as Table name @Table public class Student { //mark id as primary key @Id //defining id as column name @Column private int id; //defining name as column name @Column private String name; //defining age as column name @Column private int age; //defining email as column name @Column private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 

שלב 11: צור חבילה עם השם com.javatpoint.controller בתיקייה src/main/java.

שלב 12: צור מחלקת Controller בחבילה com.javatpoint.controller . יצרנו מחלקת בקר עם השם מבקר סטודנטים . בכיתה StudentController, עשינו את הפעולות הבאות:

  • סמן את הכיתה בתור RestController באמצעות ההערה @RestController.
  • חוט אוטומטי את שירות סטודנטים כיתה באמצעות ההערה @Wired אוטומטי .
  • הגדירו את השיטות הבאות:
      getAllStudent():זה מחזיר רשימה של כל התלמידים.
  • getStudent():הוא מחזיר פרט תלמיד שציינו במשתנה הנתיב. העברנו את id כארגומנט באמצעות ההערה @PathVariable. ההערה מציינת שפרמטר מתודה צריך להיות כבול למשתנה תבנית URI.deleteStudent():זה מוחק תלמיד ספציפי שציינו במשתנה הנתיב.saveStudent():זה חוסך את פרטי התלמיד. ההערה @RequestBody מציינת שפרמטר מתודה צריך להיות קשור לגוף בקשת האינטרנט.

StudentController.java

 package com.javatpoint.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.javatpoint.model.Student; import com.javatpoint.service.StudentService; //creating RestController @RestController public class StudentController { //autowired the StudentService class @Autowired StudentService studentService; //creating a get mapping that retrieves all the students detail from the database @GetMapping('/student') private List getAllStudent() { return studentService.getAllStudent(); } //creating a get mapping that retrieves the detail of a specific student @GetMapping('/student/{id}') private Student getStudent(@PathVariable('id') int id) { return studentService.getStudentById(id); } //creating a delete mapping that deletes a specific student @DeleteMapping('/student/{id}') private void deleteStudent(@PathVariable('id') int id) { studentService.delete(id); } //creating post mapping that post the student detail in the database @PostMapping('/student') private int saveStudent(@RequestBody Student student) { studentService.saveOrUpdate(student); return student.getId(); } } 

שלב 13: צור חבילה עם השם com.javatpoint.service בתיקייה src/main/java.

שלב 14: ליצור שֵׁרוּת מעמד. יצרנו כיתת שירות עם השם שירות סטודנטים בחבילה com.javatpoint.service.

StudentService.java

 package com.javatpoint.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javatpoint.model.Student; import com.javatpoint.repository.StudentRepository; @Service public class StudentService { @Autowired StudentRepository studentRepository; //getting all student records public List getAllStudent() { List students = new ArrayList(); studentRepository.findAll().forEach(student -> students.add(student)); return students; } //getting a specific record public Student getStudentById(int id) { return studentRepository.findById(id).get(); } public void saveOrUpdate(Student student) { studentRepository.save(student); } //deleting a specific record public void delete(int id) { studentRepository.deleteById(id); } } 

שלב 15: צור חבילה עם השם com.javatpoint.repository בתיקייה src/main/java.

שלב 16: ליצור מאגר מִמְשָׁק. יצרנו ממשק מאגר עם השם מאגר סטודנטים בחבילה com.javatpoint.repository. זה מרחיב את מאגר גס מִמְשָׁק.

StudentRepository.java

 package com.javatpoint.repository; import org.springframework.data.repository.CrudRepository; import com.javatpoint.model.Student; public interface StudentRepository extends CrudRepository { } 

כעת נגדיר את מקור הנתונים כתובת URL, שם מחלקה לנהג, שם משתמש, ו סיסמה, בתוך ה application.properties קוֹבֶץ.

שלב 17: פתח את ה application.properties קובץ והגדר את המאפיינים הבאים.

application.properties

 spring.datasource.url=jdbc:h2:mem:javatpoint spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect #enabling the H2 console spring.h2.console.enabled=true 

הערה: אל תשכח להפעיל את קונסולת H2.

לאחר יצירת כל המחלקות והחבילות, ספריית הפרויקט נראית כך.

מסד נתונים של Spring Boot H2

כעת נריץ את האפליקציה.

שלב 18: לִפְתוֹחַ SpringBootH2DatabaseExampleApplication.java קובץ והפעל אותו כיישום Java.

SpringBootH2DatabaseExampleApplication.java

 package com.javatpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootH2DatabaseExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootH2DatabaseExampleApplication.class, args); } } 

בשלב הבא, נשתמש ב- rest client דוור עבור שליחת ה הודעה ו לקבל בַּקָשָׁה . אם הדוור אינו מותקן במערכת שלך, בצע את השלבים הבאים:

שלב 19: פתח את ה דוור ועשה את הפעולות הבאות:

  • בחר את הודעה
  • הפעל את כתובת האתר http://localhost:8080/student.
  • בחר את גוּף
  • בחר את סוג התוכן JSON (יישום/json).
  • הכנס את הנתונים. הכנסנו לגוף את הנתונים הבאים:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • הקלק על ה לִשְׁלוֹחַ

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

רשימת גופני gimp

באופן דומה, הכנסנו את הנתונים הבאים.

 { 'id': '002', 'age': '24', 'name': 'Vadik', 'email': '[email protected]' } { 'id': '003', 'age': '21', 'name': 'Prateek', 'email': '[email protected]' } { 'id': '004', 'age': '25', 'name': 'Harsh', 'email': '[email protected]' } { 'id': '005', 'age': '24', 'name': 'Swarit', 'email': '[email protected]' } 

בואו ניגש למסוף H2 כדי לראות את הנתונים.

שלב 20: פתח את הדפדפן והפעל את כתובת האתר http://localhost:8080/h2-console. הקלק על ה לְחַבֵּר כפתור, כפי שמוצג להלן.

מסד נתונים של Spring Boot H2

לאחר לחיצה על לְחַבֵּר כפתור, אנו רואים את סטוּדֶנט טבלה במסד הנתונים, כפי שמוצג להלן.

מסד נתונים של Spring Boot H2

שלב 21: הקלק על ה סטוּדֶנט טבלה ולאחר מכן לחץ על לָרוּץ לַחְצָן. הטבלה מציגה את הנתונים שהכנסנו לגוף.

מסד נתונים של Spring Boot H2

שלב 22: פתח את הדוור ושלח א לקבל בַּקָשָׁה. זה מחזיר את הנתונים שהכנסנו למסד הנתונים.

מסד נתונים של Spring Boot H2

בוא נשלח א לקבל בקשה עם כתובת האתר http://localhost:8080/student/{id}. הזמנו את כתובת האתר http://localhost:8080/student/3. זה מחזיר את הפרטים של התלמיד שהמזהה שלו הוא 3.

מסד נתונים של Spring Boot H2

באופן דומה, אנו יכולים גם לשלוח א לִמְחוֹק בַּקָשָׁה. נניח שאנו רוצים למחוק רשומת תלמיד שהמזהה שלה הוא 2.

למחיקת רשומת סטודנט, שלח א לִמְחוֹק בקשה עם כתובת האתר http://localhost:8080/student/2. אנו רואים שהתלמיד שהזיהוי שלו 2 נמחק ממסד הנתונים.

מסד נתונים של Spring Boot H2
הורד פרויקט דוגמה למסד נתונים של H2