开发者

在SpringBoot中集成H2数据库的完整指南

开发者 https://www.devze.com 2024-10-31 10:37 出处:网络 作者: 编码行者
目录引言依赖关系数据库配置数据库持久化数据库操作初始化数据源Hibernate和data.sql访问H2控制台进一步配置H2控制台H2数据库URL选项结论引言
目录
  • 引言
  • 依赖关系
  • 数据库配置
  • 数据库持久化
  • 数据库操作
    • 初始化数据源
    • Hibernate和data.sql
  • 访问H2控制台
    • 进一步配置H2控制台
  • H2数据库URL选项
    • 结论

      引言

      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>
      </dependejsncy>
      <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:phpmydb
          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');
      

      Sprijsng Boot会自动运行这个文件来初始化数据库。我们可以通过将spring.s编程客栈ql.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.we编程b-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数据库,并利用其强大的功能。

      以上就是在SpringBoot中集成H2数据库的完整指南的详细内容,更多关于SpringBoot集成H2数据库的资料请关注编程客栈(www.devze.com)其它相关文章!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号