内容简介:本指南将帮助您了解内存数据库的概念。我们将看一下简单的JPA示例,以了解在内存数据库中使用的最佳实践。典型的数据库涉及大量的设置。例如,对于Oracle或mySQL数据库,您需要
本指南将帮助您了解内存数据库的概念。我们将看一下简单的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标注主键:
@Entity public 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:
源码: Github
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将自动配置内存数据库。
Spring Boot
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 内存数据库解析与主流产品对比(一)
- 内存数据库解析与主流产品对比(三)
- Golang 实现 Redis(3): 实现内存数据库
- 内存型数据库Redis持久化小结
- Monarch:谷歌的全球级内存时序数据库
- Redis 6.2-RC3 发布,高性能内存数据库
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java学习指南(第4版)(上下册)
Patrick Niemeyer、Daniel Leuck / 李强、王建新、吴戈 / 人民邮电出版社 / 2014-7 / 128.00元
《Java学习指南(第4版)(上、下册)》是畅销Java学习指南的最新版,详细介绍了Java 6和Java 7的语言特性和API。本书全面介绍了Java的基础知识,力图通过完备地介绍Java语言、其类库、编程技术以及术语,从而成为一本名符其实的入门级图书。 《Java学习指南(第4版)(上、下册)》加入了从Java 6和Java 7发布以后的变化,包括新的语言功能、并发工具(Fork-Joi......一起来看看 《Java学习指南(第4版)(上下册)》 这本书的介绍吧!