English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot H2 قاعدة بيانات

什么是内存数据库

ما هي قاعدة البيانات الذاكرية

قاعدة البيانات الذاكرية تعتمد على ذاكرة النظام بدلاً من مساحة تخزين البيانات على القرص. لأن الوصول إلى الذاكرة أسرع من الوصول إلى القرص. عند عدم الحاجة إلى حفظ البيانات بشكل دائم، نستخدم قاعدة البيانات الذاكرية. القاعدة البيانية الذاكرية هي قاعدة بيانات مدمجة. بالافتراض، تكون قاعدة البيانات الذاكرية غير مستقرة، حيث يفقد كل البيانات المخزنة عند إعادة تشغيل التطبيق. القاعدة البيانية الذاكرية المستخدمة على نطاق واسع هي H2،HSQLDB (HyperSQL قاعدة البيانات)و ، Apache Derby.

سيقوم بإنشاء التكوين تلقائيًا.

الاستمرارية مع قاعدة البيانات الذاكرية قواعد البيانات المتمثلة في الذاكرة تخزن البيانات بشكل دائم في الذاكرة الفيزيائية. حتى إذا انقطع تشغيل خادم قاعدة البيانات، ستكون البيانات متاحة. بعض قواعد البيانات المتمثلة في الذاكرة الشائعة هي،Oracle،MySQL،Postgres،

في قاعدة البيانات الذاكرية، يتم تخزين البيانات في ذاكرة النظامفيها. POC (البرهان التجريبي) مفيد جدًا، وليس له فائدة في التطبيقات الإنتاجية. القاعدة البيانية الذاكرية المستخدمة على نطاق واسع هي H2.

ما هو قاعدة بيانات H2

H2 هو مدمج، مفتوح المصدرو ذاكرةنظام إدارة قاعدة البيانات العلاقية مكتوب باللغة Java. هذا هو قاعدة بيانات العملاء/الخادمالتطبيق. يُستخدم عادةً اختبار وحدة. يخزن البيانات في الذاكرة بدلاً من حفظ البيانات بشكل دائم على القرص.

ميزات

بدون تكوين سهل الاستخدام. خفيف، سريع. يقدم ضبط بسيط يمكن من خلاله التبديل بين قاعدة البيانات الحقيقية وقاعدة البيانات الذاكرية. يدعم SQL القياسية و API JDBC. يقدم واجهة تحكم ويب يمكن الحفاظ عليها في قاعدة البيانات.

ضبط قاعدة البيانات H2

إذا كنت ترغب في استخدام قاعدة البيانات H2 في التطبيق الخاص بك،则需要 إضافة الاعتماد التالي في ملف pom.xml:

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

بعد إضافة الاعتماد، نحتاج إلى ضبط قاعدة البيانات H2 URL مصدر البيانات، اسم فئة القيادة، اسم المستخدمو كلمة المرور. يقدم 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 في الخصائص، mem هو اسم قاعدة البيانات الذاكرية، بينما testdb هو اسم قاعدة البيانات الذاكرية. بالافتراض، يقدم H2 بنية التحكم. يمكننا أيضًا تعريف بنية التحكم وقاعدة البيانات الخاصة بنا. اسم المستخدم الافتراضي هو sa ، كلمة المرور الفارغة تعني خاليكلمة المرور. إذا كنت ترغب في تغيير اسم المستخدم وكلمة المرور، يمكنك تغيير هذه القيم.

حفظ البيانات في قاعدة البيانات H2

إذا كنت ترغب في الحفاظ على البيانات في قاعدة البيانات H2، يجب أن نحفظ البيانات في ملف. لذلك، يجب تغيير خاصية URL مصدر البيانات.

#حفظ البيانات
spring.datasource.url=jdbc:h2:file:/data/sampledata
spring.datasource.url=jdbc:h2:C:/data/sampledata

في الخصائص السابقة، sampledata اسم ملف.

إنشاء نموذج Schema وملء البيانات

يمكننا تعريفها من خلال resource في مجلد (src) أنشئ SQL ملف لإنشاء النموذج (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,
);

يمكننا تعريفها من خلال resource في مجلد (src/main/resource) أنشئ SQL ملف لملء البيانات في الجدول.

data.sql

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

يأخذ Spring Boot ملف data.sql ملف واجعلها تعمل لـ H2 قاعدة البيانات.

واجهة H2 التشغيل

بالتجريد، تم تعطيل رؤية واجهة H2 قاعدة البيانات. قبل الوصول إلى قاعدة البيانات H2، يجب علينا تمكينها باستخدام الخصائص التالية.

# تفعيل H2
consolespring.h2.console.enabled=true

بعد تمكين واجهة H2 التشغيل، يمكننا الآن الوصول إلى واجهة H2 التشغيل عبر URL http://localhost:8080/h2-console في المتصفح. في الصورة التالية يظهر رؤية واجهة H2 قاعدة البيانات.

في الشاشة السابقة، قمنا بتعريف w3codebox قاعدة البيانات.

مثال Spring Boot H2

لنضبط Spring Boot.

الخطوة 1: فتح Spring Initializr http://start.spring.io .

步骤2: 选择Spring Boot版本 2.3.0.M1。

步骤2: 提供 Group名称。我们提供了 com.w3codebox。

步骤3: 提供 Artifact ID。我们提供了 spring-boot-h2-database-example。

步骤5: 添加依赖项 Spring Web,Spring Data JPA ,و H2数据库。

步骤6: النقر على Generate (生成)按钮。当我们单击"生成"按钮时,它会将项目包装在 Jar 文件中,并将其下载到本地系统。

步骤7: 提取 Jar文件并将其粘贴到STS工作区中。

第8步: 导入项目文件夹到STS。

文件->导入->现有Maven项目->浏览->选择文件夹spring-boot-h2-database-example->完成

导入需要一些时间。

步骤9: src/main/java文件夹中的名称 com.w3codebox.model .

步骤10: com.w3codebox.model中的类。 我们创建了名为 Student的类。 在"图书"类中,我们执行了以下操作:

定义四个变量 id, age, nameو 生成Getter和Setters。
右键单击文件-> Source-> Generate Getters和Setters。
استخدام الملصقات @Entity,将类标记为 Entity . استخدام الملصقات @Table将该类标记为 Table 名称。 通过使用注解 @Column 将每个变量定义为 Column .

Student.java

package com.w3codebox.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
//将类标记为实体
@Entity
//定义类名为表名
@Table
public class Student 
{
    //将id标记为主键
    @Id
    //将id定义为列名
    @Column
    private int id;
    //将name定义为列名
    @Column
    private String name;
    //将年龄age为列名
    @Column
    private int age;
    //تعريف email كاسم العمود
    @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: الخطوة 15: في مجلد com.w3codebox.controller المكتبة.  

الخطوة 12: في حزمة   com.w3codebox.controller في إنشاء فئة Controller. قمنا بإنشاء اسم   StudentController فئة التحكم. في فئة StudentController، قمنا بأتمام العمليات التالية:استخدام الملصقات @RestController يُعين الفئة كـ RestController . استخدام الملصقات @Autowired التعليق التلقائي StudentService فئة. تحديد الأساليب التالية: getAllStudent(): يُرجع قائمة بجميع الطلاب. getStudent(): يُرجع تفاصيل الطالب المحدد الذي نحدده في متغير المسار. باستخدام الملصق @PathVariable، قمنا بتحويل id كمعامل. يشير الملصق إلى أن يجب ربط م参数 إلى متغير النمذجة URI. deleteStudent(): سيقوم بإزالة الطالب المحدد الذي نحدده في متغير المسار. saveStudent(): يُحفظ تفاصيل الطلاب هنا. يشير الملصق @RequestBody إلى أن يجب ربط م参数 إلى نص الطلب الوسائطي.

StudentController.java

package com.w3codebox.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.w3codebox.model.Student;
import com.w3codebox.service.StudentService;
//إنشاء RestController
@RestController
public class StudentController 
{
    //تثبيت كلاس StudentService تلقائيًا
    @Autowired
    StudentService studentService;
    //إنشاء نقطة تحكم Get لاسترجاع تفاصيل جميع الطلاب من قاعدة البيانات
    @GetMapping("/student")
    private List<Student> getAllStudent() 
    {
        return studentService.getAllStudent();
    }
    //إنشاء نقطة تحكم Get لاسترجاع تفاصيل طالب معين
    @GetMapping("/student/{id}")
    private Student getStudent(@PathVariable("id") int id) 
    {
        return studentService.getStudentById(id);
    }
    //إنشاء نقطة تحكم Delete لإزالة طالب معين
    @DeleteMapping("/student/{id}")
    private void deleteStudent(@PathVariable("id") int id) 
    {
        studentService.delete(id);
    }
    //إنشاء نقطة تحكم POST لتحديث تفاصيل الطلاب في قاعدة البيانات
    @PostMapping("/student")
    private int saveStudent(@RequestBody Student student) 
    {
    studentService.saveOrUpdate(student);
    return student.getId();
    }
}

步骤13: الخطوة 15:   src/main/java中创建名称为 com.w3codebox.service المكتبة.

步骤14: إنشاء   Service 类。我们在包   com.w3codebox.service。

StudentService.java 中创建了名为   StudentService 的服务类。

package com.w3codebox.service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.w3codebox.model.Student;
import com.w3codebox.repository.StudentRepository;
@Service
public class StudentService 
{
    @Autowired
    StudentRepository studentRepository;
    //获取所有学生记录
    public List<Student> getAllStudent() 
    {
    List<Student> students = new ArrayList<Student>();
    studentRepository.findAll().forEach(student -> students.add(student));
    return students;
    }
    //获取特定记录
    public Student getStudentById(int id) 
    {
    return studentRepository.findById(id).get();
    }
    public void saveOrUpdate(Student student) 
    {
    studentRepository.save(student);
    }
    //删除特定记录
    public void delete(int id) 
    {
    studentRepository.deleteById(id);
    }
}

studentRepository.deleteById(id); الخطوة 15:   في مجلد com.w3codebox.repository المكتبة.

الخطوة 16: إنشاء  التخزينفي الماكينة   تم إنشاء واجهة اسمها StudentRepository واجهة التخزين. يوسع   Crud Repository الواجهة.

StudentRepository.java

package com.w3codebox.repository;
import org.springframework.data.repository.CrudRepository;
import com.w3codebox.model.Student;
public interface StudentRepository extends CrudRepository<Student, Integer>
{
}
 

الآن، سنقوم ب   application.properties تكوين المصدر في الملف   URL، اسم فئة المحرك، اسم المستخدمو  كلمة المرور.

الخطوة 17: افتح   application.properties الملف وتكوين الخصائص التالية.

application.properties

spring.datasource.url=jdbc:h2:mem:w3codebox
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# تفعيل H2
consolespring.h2.console.enabled=true
ملاحظة: لا تنسى تفعيل وحدة تحكم H2.

بعد إنشاء جميع الفئات والصناديق، يبدو مسار المشروع كالتالي.

الآن، سنقوم بتشغيل التطبيق.

الخطوة 18: افتح   SpringBootH2DatabaseExampleApplication.java الملف ثم تشغيله كتطبيق Java.

SpringBootH2DatabaseExampleApplication.java

package com.w3codebox;
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);
    }
}

في الخطوة التالية، سنستخدم البقية من العملاء  Postmanإرسال   POST و   GET الطلب  . إذا لم يكن Postman مثبتًا على نظامك، قم بتنفيذ الخطوات التالية:

من https://www.getpostman.com/downloads/ أو في متصفح https://bit.ly/1HCOCwF إضافة إضافة Google Chrome. افتح Postman وأضفتسجيل الدخول. أنشئ اسم مستخدم. لقد أنشأنا اسمًا يُدعى w3codebox لمست المستخدمين، وأضغط على تقديم

الخطوة 19: افتح  Postmanوقم بتنفيذ العمليات التالية:

اختر POST أدخل عنوان URL http: //localhost: 8080/student. اخترالجسم اختر نوع المحتوى JSON(application/json). إدراج البيانات. قمنا بإدراج البيانات التالية في النص:
{
    "id":	"001",
    "age":	"23",
    "name":	"Amit",
    "email":	"[email protected]"
}
انقرإرسال

بعد تنفيذ الطلب بنجاح، سيتم عرض  الحالة: 200 OK . هذا يعني أن السجلات تم إدراجها بنجاح في قاعدة البيانات.

على نفس النمط، قمنا بإدراج البيانات التالية.

{"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: فتح المتصفح وأدخل URL http://localhost:8080/h2-console. اضغط على   Connect الزر، كما هو موضح أدناه.

النقر على  الوصلةبعد النقر على الزر، سنرى  Studentالجدول، كما هو موضح أدناه.

خطوة 21: النقر على  Studentالجدول، ثم النقر على  تشغيلالزر. يظهر هذا الجدول البياني البيانات التي تم إدراجها في النص.

خطوة 22: فتح Postman وإرسال   GET طلب باستخدام URL http: //localhost: 8080/student/{id}.

دعونا نرسل   GET طلب. نحن قد قمنا بتهيئة URL http://localhost:8080/student/3.

بالمثل، يمكننا إرسال   Delete طلب. لنفترض أننا نريد إزالة سجل الطلاب ذو ID 2.

لإزالة سجل الطلاب، يرجى إرسال طلب يحتوي على URL http://localhost:8080/student/   DELETE طلب. نحن نرى أن ID هو   2 تم حذف الطلاب من قاعدة البيانات.