1.简介
在本文中,我们将学习如何配置Spring Boot应用程序以使用嵌入式H2数据库,然后查看H2的嵌入式数据库在何处存储数据。
H2数据库是一个轻量级的开源数据库,目前尚无商业支持。我们可以在多种模式下使用它:
- 服务器模式–用于通过JDBC或ODBC通过TCP / IP进行远程连接
- 嵌入式模式–适用于使用JDBC的本地连接
- 混合模式–这意味着我们可以将H2用于本地和远程连接
H2可以配置为作为内存数据库运行,但也可以是持久性的,例如,其数据将存储在磁盘上。就本教程而言,我们将在启用持久性的嵌入式模式下使用H2数据库,以便将数据存储在磁盘上。
2.嵌入式H2数据库
如果要使用H2数据库,则需要将h2
和spring-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 评论