前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot和内存数据库中H2的使用教程

Spring Boot和内存数据库中H2的使用教程

作者头像
lyb-geek
发布2019-05-07 15:06:05
5.7K0
发布2019-05-07 15:06:05
举报

  本指南将帮助您了解内存数据库的概念。我们将看一下简单的JPA示例,以了解在内存数据库中使用的最佳实践。

  • 什么是内存数据库?
  • 为什么使用内存数据库?
  • 使用内存数据库的最佳做法是什么?
  • 如何将Spring Boot项目连接到H2?
  • 什么是内存数据库?

典型的数据库涉及大量的设置。

例如,对于Oracle或mySQL数据库,您需要

  • 安装数据库
  • 设置架构
  • 设置表格
  • 填充数据

通过设置数据源和许多其他代码将应用程序连接到数据库

场景1 - 让我们考虑一下你想要快速进行POC概念验证测试的情况。使用传统数据库需要大量开销。

场景2 - 考虑单元测试

  • 当数据库中的某些数据/模式发生更改时,不希望它们失败
  • 可能希望能够并行运行它们 - 多个开发人员可能并行运行测试。

在这种情况下,内存数据库提供了理想的解决方案。

应用程序启动时会创建内存数据库,并在应用程序停止时销毁。

好处

  • 零项目设置或基础设施
  • 零配置
  • 零维护
  • 易于学习,POC和单元测试

Spring Boot提供了简单配置,可以在真实数据库和内存数据库(如H2)之间切换

H2

  H2是内存数据库中的流行之一。Spring Boot与H2的集成非常好。H2是用Java编写的关系数据库管理系统。它可以嵌入Java应用程序中,也可以在客户端 - 服务器模式下运行。

H2支持SQL标准的子集。

H2还提供了一个Web控制台来维护数据库。

Spring Boot和H2

您需要很少的配置才能将Spring Boot应用程序与H2连接。

在大多数情况下,只需将H2运行时jar添加到依赖项中即可。

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

可以结合JPA和H2一起使用,也可以使用Spring Data JDBC结合H2一起使用,下面是JPA引入:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>

JPA使用非常方便,@Entity标注实体类,@Id标注主键:

@Entitypublic class Product {   @javax.persistence.Id   private String Id;   private String name;

其他无需任何配置,Spring Boot启动时发现classpath中有m2就默认启动,同时建立product对应的H2数据表。

Spring Boot和H2数据库管理界面

H2提供了一个名为H2 Console的Web界面来查看数据。让我们在application.properties中启用h2控制台。

/src/main/resources/application.properties中加入:

spring.h2.console.enabled=true

访问http://localhost:8080/h2-console/ 直接点击进入

注意:JDBC URL默认是jdbc:h2:~/test,而Spring Boot的默认数据库url应该是jdbc:h2:mem:testdb,否则进去后找不到JPA创建的数据表PRODUCT:

H2和Spring Boot组合如何工作?

首先也是最重要的事情 - Spring Boot很聪明。

如果您正在与内存数据库进行通信,则默认情况下,它会查看实体并创建数据库和表。

但是,如果连接到mysql数据库,Spring Boot会知道它是一个永久数据库。默认情况下,它要求您设置数据库,设置表并使用您建立的连接。

Spring Boot应用程序是如何连接数据库H2的?

它归结为Spring Boot Auto Configuration!

就H2而言,只要Spring Boot在类路径中看到H2,它就会自动配置类似于下面所示的数据源:

      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

它知道您正在使用内存数据库H2,如果您不提供默认URL,它将使用默认URL。

指定数据库连接信息在哪里?它如何知道自动连接到H2?

这就是Spring Boot Autoconfiguration的魔力。

Spring Boot自动配置尝试根据您添加的jar依赖项自动配置Spring应用程序。例如,如果HSQLDB在您的类路径上,并且您尚未手动配置任何数据库连接bean,则Spring Boot将自动配置内存数据库。

demo链接

https://github.com/banq/articles/tree/master/demoproduct

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • H2
  • Spring Boot和H2
  • Spring Boot和H2数据库管理界面
  • H2和Spring Boot组合如何工作?
  • Spring Boot应用程序是如何连接数据库H2的?
  • demo链接
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档