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 и JDBC API. Она предоставляет веб-консоль, которую можно использовать для управления базой данных.

Конфигурация базы данных 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, теперь мы можем через URL http://localhost:8080/h2-console посетить консоль H2 в браузере. На следующем рисунке показан вид консоли базы данных 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。
右键单击文件->源->生成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: в директории в директории com.w3codebox.controller пакета.  

шаг 12: в пакете   com.w3codebox.controller в создании класса Controller. Мы создали класс с именем   StudentController класс контроллера. В классе StudentController мы выполнили следующие действия:использование анонимаций @RestController маркирует класс как RestController использование анонимаций @Autowired автоматическая анонимация StudentService класс. определить следующие методы: getAllStudent(): оно возвращает список всех студентов. getStudent(): оно возвращает детальные данные студента, указанного в переменной path. Используя анонимацию @PathVariable, мы передали id в качестве параметра. Анонимация указывает, что параметр метода должен быть привязан к переменной шаблона URI. deleteStudent(): оно удаляет конкретного студента, указанного в переменной path. 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;
    // Создание гет-маппинга для поиска всех студентов в базе данных
    @GetMapping("/student")
    private List<Student> getAllStudent() 
    {
        return studentService.getAllStudent();
    }
    // Создание гет-маппинга для получения детальной информации о конкретном студенте
    @GetMapping("/student/{id}")
    private Student getStudent(@PathVariable("id") int id) 
    {
        return studentService.getStudentById(id);
    }
    // Создание маппинга для удаления конкретного студента
    @DeleteMapping("/student/{id}")
    private void deleteStudent(@PathVariable("id") int id) 
    {
        studentService.delete(id);
    }
    // Создание пост-маппинга для публикации детальной информации о студенте в базе данных
    @PostMapping("/student")
    private int saveStudent(@RequestBody Student student) 
    {
    studentService.saveOrUpdate(student);
    return student.getId();
    }
}

步骤13: в директории   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);
    }
}

Шаг 15: в директории   в директории com.w3codebox.repository пакета.

Шаг 16: создайте  хранилищев пакете   в пакете com.w3codebox.repository был создан интерфейс с именем 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/ или добавьте расширение Google Chrome по ссылке https://bit.ly/1HCOCwF в браузере. запустите Postman ирегистрацияСоздайте имя пользователя. Мы создали имя w3codebox пользователя, и нажмите Submit

шаг 19: откройте  Postmanи выполните следующие действия:

Выберите POST запустите URL http: //localhost: 8080/student. ВыберитеBody Выберите тип содержимого 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. Он вернул详细信息 студента с ID 3.

Таким же образом, мы можем отправить   Delete Запрос. Предположим, что мы хотим удалить запись студента с ID 2.

Чтобы удалить запись студента, отправьте запрос с URL http://localhost:8080/student/   DELETE Запрос. Мы видим ID в   2 студент был удален из базы данных.