锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. JAVA
  4. 在Spring Boot中集成H2数据库:完整指南

在Spring Boot中集成H2数据库:完整指南

0
  • JAVA
  • 发布于 2024-08-14
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

引言

Spring Boot 是一个简化企业级 Java 应用程序开发的强大框架。H2 数据库是一个轻量级的、开源的 SQL 数据库,非常适合用于开发和测试。本文将指导您如何在 Spring Boot 应用程序中集成 H2 数据库,并探索一些高级配置选项。

依赖关系

首先,我们需要在项目的pom.xml文件中添加 H2 数据库和 Spring Data JPA 的依赖关系:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

数据库配置

Spring Boot 默认配置应用程序连接到一个内存存储的 H2 数据库,用户名为sa,密码为空。我们可以通过在application.properties文件中添加以下属性来自定义这些设置:

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

或者,我们也可以使用application.yml文件进行配置:

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

数据库持久化

默认情况下,H2 数据库的内存存储在应用程序重启后会导致数据丢失。为了解决这个问题,我们可以将数据库存储为文件:

spring.datasource.url=jdbc:h2:file:/data/demo

或者在 YAML 文件中:

spring:
  datasource:
    url: jdbc:h2:file:/data/demo

数据库操作

在 Spring Boot 中执行 CRUD 操作与在其他 SQL 数据库中类似。我们可以使用 JPA 仓库接口和实体类来管理数据库操作。

初始化数据源

我们可以使用 SQL 脚本来初始化数据库。在src/main/resources目录下创建一个 SQL 文件,填充一些示例数据:

INSERT INTO countries (id, name) VALUES (1, 'USA');
INSERT INTO countries (id, name) VALUES (2, 'France');
INSERT INTO countries (id, name) VALUES (3, 'Brazil');
INSERT INTO countries (id, name) VALUES (4, 'Italy');
INSERT INTO countries (id, name) VALUES (5, 'Canada');

Spring Boot 会自动运行这个文件来初始化数据库。我们可以通过将spring.sql.init.mode属性设置为never来禁用这种默认行为。此外,还可以配置多个 SQL 文件来加载初始数据。

Hibernate 和 data.sql

默认情况下,data.sql脚本在 Hibernate 初始化之前执行。这使得基于脚本的初始化与 Flyway 和 Liquibase 等其他数据库迁移工具保持一致。当我们每次重新创建 Hibernate 生成的模式时,我们需要设置一个额外的属性:

spring.jpa.defer-datasource-initialization=true

这会修改默认的 Spring Boot 行为,并在 Hibernate 生成模式之后填充数据。

访问 H2 控制台

H2 提供了一个嵌入式的 GUI 控制台,用于浏览数据库内容和运行 SQL 查询。要启用 H2 控制台,在application.properties中添加以下属性:

spring.h2.console.enabled=true

或者在application.yml中:

spring:
  h2:
    console:
      enabled: true

启动应用程序后,访问http://localhost:8080/h2-console即可使用 H2 控制台。在登录页面使用配置的数据库 URL 和凭据进行登录。

进一步配置 H2 控制台

我们可以通过在项目的application.properties中指定以下属性来进一步配置控制台:

spring.h2.console.path=/h2-console
spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others=false

或者在 YAML 配置中:

spring:
  h2:
    console:
      path: /h2-console
      settings:
        trace: false
        web-allow-others: false

H2 数据库 URL 选项

H2 数据库 URL 提供了多种选项以进一步自定义数据库行为。例如:

  • DB_CLOSE_DELAY=-1:确保在 JVM 运行期间数据库保持打开状态。
  • DB_CLOSE_ON_EXIT=FALSE:即使 JVM 关闭,数据库也保持打开状态。
  • AUTO_RECONNECT=TRUE:允许在连接丢失时自动重新连接。
  • MODE=PostgreSQL:将 H2 数据库设置为 PostgreSQL 兼容模式。

示例配置:

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE;MODE=PostgreSQL;

结论

H2 数据库与 Spring Boot 的集成非常流畅,提供了一个轻量级且功能丰富的解决方案,非常适合开发和测试。通过本文的指南,您应该能够轻松地在 Spring Boot 应用程序中集成 H2 数据库,并利用其强大的功能。

参考资料

  • Spring Boot 官方文档
  • H2 数据库官方文档

通过以上步骤,您可以在 Spring Boot 项目中成功集成 H2 数据库,并使用其强大的功能进行开发和测试。希望这篇文章对您有所帮助!

标签: #软件开发 1171 #JAVA 991
相关文章

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

SpringBoot整合异步任务执行 2024-10-08 11:24

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响用 户体验 异步任务: 异步任务是在多线程中同时执行,多个任务可以并发执行,同时处理多个请求,响应快,资源

springboot kafka多数据源,通过配置动态加载发送者和消费者 2024-10-08 11:24

前言 最近做项目,需要支持kafka多数据源,实际上我们也可以通过代码固定写死多套kafka集群逻辑,但是如果需要不修改代码扩展呢,因为kafka本身不处理额外逻辑,只是起到削峰,和数据的传递,那么就需要对架构做一定的设计了。 准备test kafka本身非常容易上手,如果我们需要单元测试,引入ja

SpringBoot 集成 Redis 2024-10-08 11:24

一:SpringBoot 集成 Redis ①Redis是一个 NoSQL(not only)数据库, 常作用缓存 Cache 使用。 ②Redis是一个中间件、是一个独立的服务器;常用的数据类型: string , hash ,set ,zset , list ③通过Redis客户端可以使用多种语

SpringBoot整合QQ邮箱 2024-10-08 11:24

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件…. 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.