H2的嵌入式數據庫在哪裡存儲數據?

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的嵌入式數據庫在哪裡存儲數據。我們還學習瞭如何配置數據庫文件的位置。