Spring Boot H2 数据库

18 Mar 2025 | 8 分钟阅读

什么是内存数据库

内存数据库依赖于系统内存而不是磁盘空间来存储数据。由于内存访问速度比磁盘访问速度快。当我们不需要持久化数据时,我们使用内存数据库。内存数据库是一个嵌入式数据库。默认情况下,内存数据库是易失性的,当我们重新启动应用程序时,所有存储的数据都会丢失。

广泛使用的内存数据库有 H2, HSQLDB (HyperSQL Database), Apache Derby. 它会自动创建配置。

持久性数据库与内存数据库

持久性数据库将数据保存在物理内存中。即使数据库服务器重新启动,数据也将可用。一些流行的持久性数据库包括 Oracle, MySQL, Postgres, 等。

对于内存数据库,数据存储在系统内存中。程序关闭时会丢失数据。它对 POC(概念验证)很有用,而不是用于生产应用程序。广泛使用的内存数据库是 H2。

什么是 H2 数据库

H2 是一个 嵌入式、开源 内存 数据库。它是一个用 Java 编写的关系数据库管理系统。它是一个 客户端/服务器 应用程序。它通常用于 单元测试。它将数据存储在内存中,而不是将数据持久保存在磁盘上。

优点

  • 零配置
  • 易于使用。
  • 它轻巧且快速。
  • 它提供了简单的配置来在真实数据库和内存数据库之间切换。
  • 它支持标准 SQL 和 JDBC API。
  • 它提供了一个 Web 控制台来维护数据库。

配置 H2 数据库

如果我们想在应用程序中使用 H2 数据库,我们需要在 pom.xml 文件中添加以下依赖项

添加依赖项后,我们需要配置 H2 数据库的 数据源 URL、驱动程序类名、用户名 密码。Spring Boot 提供了一种在 application.properties 文件中配置这些属性的简便方法。

spring.datasource.url 属性中,mem 是内存数据库的名称,testdb 是 H2 提供的模式名称,默认情况下。我们也可以定义我们自己的模式和数据库。默认用户名是 sa,空白密码表示 密码。如果我们想更改用户名和密码,我们可以覆盖这些值。

在 H2 数据库中持久化数据

如果我们想在 H2 数据库中持久化数据,我们应该将数据存储在文件中。为了实现同样的目的,我们需要更改数据源 URL 属性。

在上面的属性中,sampledata 是文件名。

创建模式并填充数据

我们可以通过在 resource 文件夹 (src/main/resource) 中创建一个 SQL 文件来定义模式。

schema.sql

我们可以通过在 resource 文件夹 (src/main/resource) 中创建一个 SQL 文件来填充表中的数据。

data.sql

Spring Boot 会自动拾取 data.sql 文件并在应用程序启动期间针对 H2 数据库运行它。

H2 控制台

默认情况下,H2 数据库的控制台视图已禁用。在访问 H2 数据库之前,我们必须使用以下属性启用它。

启用 H2 控制台后,我们现在可以通过调用 URL https://:8080/h2-console 在浏览器中访问 H2 控制台。下图显示了 H2 数据库的控制台视图。

Spring Boot H2 Database

在上面的截图,我们定义了自己的名为 javatpoint 的数据库。

Spring Boot H2 示例

让我们设置一个带有 H2 数据库的 Spring Boot 应用程序。

步骤1: 打开Spring Initializr http://start.spring.io。

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

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

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

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

步骤 6: 单击 Generate 按钮。当我们单击 Generate 按钮时,它会将项目打包成一个 Jar 文件并将其下载到本地系统。

Spring Boot H2 Database

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

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

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

它需要一些时间来导入。

步骤 9: 在文件夹 src/main/java 中创建一个名为 com.javatpoint.model 的包。

步骤 10: 在包 com.javatpoint.model 中创建一个模型类。我们创建了一个名为 Student 的模型类。在 Books 类中,我们做了以下操作

  • 定义四个变量 id, age, name,
  • 生成 Getters 和 Setters。
    右键单击该文件 -> Source -> Generate Getters and Setters.
  • 使用注解 @Entity 将类标记为 Entity
  • 使用注解 @Table 将类标记为 Table 名称。
  • 使用注解 @Column 将每个变量定义为 Column

Student.java

步骤 11: 在文件夹 src/main/java 中创建一个名为 com.javatpoint.controller 的包。

步骤 12: 在包 com.javatpoint.controller 中创建一个 Controller 类。我们创建了一个名为 StudentController 的控制器类。在 StudentController 类中,我们做了以下操作

  • 使用注解 @RestController 将类标记为 RestController
  • 使用注解 @Autowired 自动连接 StudentService 类。
  • 定义以下方法
    • getAllStudent(): 它返回所有学生的列表。
    • getStudent(): 它返回我们在路径变量中指定的学生详细信息。我们使用注解 @PathVariable 传递了 id 作为参数。该注解表明方法参数应该绑定到 URI 模板变量。
    • deleteStudent(): 它删除我们在路径变量中指定的特定学生。
    • saveStudent(): 它保存学生的详细信息。注解 @RequestBody 表明方法参数应该绑定到 Web 请求的正文。

StudentController.java

步骤 13: 在文件夹 src/main/java 中创建一个名为 com.javatpoint.service 的包。

步骤 14: 创建一个 Service 类。我们在包 com.javatpoint.service 中创建了一个名为 StudentService 的服务类。

StudentService.java

步骤 15: 在文件夹 src/main/java 中创建一个名为 com.javatpoint.repository 的包。

步骤 16: 创建一个 Repository 接口。我们在包 com.javatpoint.repository 中创建了一个名为 StudentRepository 的存储库接口。它扩展了 Crud Repository 接口。

StudentRepository.java

现在我们将配置 URL、驱动程序类名、用户名 密码,在 application.properties 文件中。

步骤 17: 打开 application.properties 文件并配置以下属性。

application.properties

注意:不要忘记启用 H2 控制台。

创建所有类和包后,项目目录如下所示。

Spring Boot H2 Database

现在我们将运行该应用程序。

步骤 18: 打开 SpringBootH2DatabaseExampleApplication.java 文件并将其作为 Java 应用程序运行。

SpringBootH2DatabaseExampleApplication.java

在下一步中,我们将使用 REST 客户端 Postman 来发送 POSTGET 请求。如果您的系统尚未安装 Postman,请按照以下步骤操作

  • 从 https://www.getpostman.com/downloads/ 下载 Postman 或在浏览器中添加 Google Chrome 扩展 https://bit.ly/1HCOCwF。
  • 启动 Postman 并 Signup。创建一个用户名。我们创建了一个名为 javatpoint 的用户,并单击了 提交

步骤 19: 打开 Postman 并执行以下操作

  • 选择 POST
  • 调用 URL https://:8080/student。
  • 选择 Body
  • 选择 Content-Type JSON (application/json)。
  • 插入数据。我们在正文中插入了以下数据
  • 单击 发送

当请求成功执行时,它会显示 状态:200 OK。这意味着记录已成功插入数据库中。

同样,我们插入了以下数据。

让我们访问 H2 控制台以查看数据。

步骤 20: 打开浏览器并调用 URL https://:8080/h2-console。单击 Connect 按钮,如下所示。

Spring Boot H2 Database

单击 Connect 按钮后,我们在数据库中看到 Student 表,如下所示。

Spring Boot H2 Database

步骤 21: 单击 Student 表,然后单击 Run 按钮。该表显示了我们在正文中插入的数据。

Spring Boot H2 Database

步骤 22: 打开 Postman 并发送 GET 请求。它返回我们插入数据库中的数据。

Spring Boot H2 Database

让我们发送一个 GET 请求,其 URL 为 https://:8080/student/{id}。我们调用了 URL https://:8080/student/3。它返回 id 为 3 的学生的详细信息。

Spring Boot H2 Database

同样,我们也可以发送一个 DELETE 请求。假设我们要删除 id 为 2 的学生记录。

要删除学生记录,请发送一个 DELETE 请求,其 URL 为 https://:8080/student/2。我们看到 id 为 2 的学生已从数据库中删除。

Spring Boot H2 Database