拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 H2的嵌入式数据库在哪里存储数据?

H2的嵌入式数据库在哪里存储数据?

白鹭 - 2021-11-24 346 0 0

1.简介

在本文中,我们将学习如何配置Spring Boot应用程序以使用嵌入式H2数据库,然后查看H2的嵌入式数据库在何处存储数据。

H2数据库是一个轻量级的开源数据库,目前尚无商业支持。我们可以在多种模式下使用它:

  • 服务器模式–用于通过JDBC或ODBC通过TCP / IP进行远程连接
  • 嵌入式模式–适用于使用JDBC的本地连接
  • 混合模式–这意味着我们可以将H2用于本地和远程连接

H2可以配置为作为内存数据库运行,但也可以是持久性的,例如,其数据将存储在磁盘上。就本教程而言,我们将在启用持久性的嵌入式模式下使用H2数据库,以便将数据存储在磁盘上

2.嵌入式H2数据库

如果要使用H2数据库,则需要将h2spring-boot-starter-data-jpa Maven依赖项添加到我们的pom.xml文件中:

<dependency>

 <groupId>com.h2database</groupId>

 <artifactId>h2</artifactId>

 <versionId>1.4.200</versionId>

 <scope>runtime</scope>

 </dependency>

 <dependency>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-starter-data-jpa</artifactId>

 <versionId>2.3.4.RELEASE</versionId>

 </dependency>

3. H2的嵌入式持久性模式

我们已经提到过H2可以使用文件系统来存储数据库数据。与内存中方法相比,此方法的最大优点是在应用程序重新启动后不会丢失数据库数据。

我们可以通过application.properties文件中spring.datasource.url属性配置存储模式。 mem参数,然后添加数据库名称,我们可以将H2数据库设置为使用内存中方法:

spring.datasource.url=jdbc:h2:mem:demodb

如果使用基于文件的持久性模式,则将设置磁盘位置的可用选项之一,而不是mem参数。在下一节中,我们将讨论这些选项是什么。

让我们看看H2数据库创建哪些文件:

  • demodb.mv.db –与其他文件不同,此文件始终创建,并且包含数据,事务日志和索引
  • demodb.lock.db –它是一个数据库锁定文件,在使用数据库时,H2会重新创建该文件
  • demodb.trace.db –此文件包含跟踪信息
  • demodb.123.temp.db –用于处理斑点或庞大的结果集
  • demodb.newFile – H2使用此文件进行数据库压缩,并且包含一个新的数据库存储文件
  • demodb.oldFile – H2还使用此文件进行数据库压缩,并且包含旧的数据库存储文件

4. H2的嵌入式数据库存储位置

H2在存储数据库文件方面非常灵活。现在,我们可以将其存储目录配置为:

  • 磁盘上的目录
  • 当前用户目录
  • 当前项目目录或工作目录

4.1磁盘上的目录

我们可以设置一个特定的目录位置来存储我们的数据库文件:

spring.datasource.url=jdbc:h2:file:C:/data/demodb

注意,在此连接字符串中,最后一个块引用数据库名称。同样,即使我们错过了此数据源连接URL中的file关键字,H2也会对其进行管理并在提供的位置创建文件。

4.2当前用户目录

如果我们想将数据库文件存储在当前用户目录中,我们将使用在file关键字(~)

spring.datasource.url=jdbc:h2:file:~/demodb

例如,在Windows系统中,该目录为C:/Users/<current user>

要将数据库文件存储在当前用户目录的子目录中:

spring.datasource.url=jdbc:h2:file:~/subdirectory/demodb

请注意,如果子目录不存在,它将自动创建

4.3当前工作目录

当前工作目录是启动应用程序的目录,在数据源URL中以点(。)引用。如果我们要在那里存储数据库文件,则将其配置如下:

spring.datasource.url=jdbc:h2:file:./demodb

要将数据库文件存储在当前工作目录的子目录中:

spring.datasource.url=jdbc:h2:file:./subdirectory/demodb

请注意,如果该子目录不存在,它将自动创建。

5.结论

在这个简短的教程中,我们讨论了H2数据库的某些方面,并展示了H2的嵌入式数据库在哪里存储数据。我们还学习了如何配置数据库文件的位置。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *