H2の組み込みデータベースはどこにデータを保存しますか?
1. 序章
この記事では、組み込み H2データベースを使用するようにSpring Bootアプリケーションを構成する方法を学習し、H2の組み込みデータベースがデータを格納する場所を確認します。
H2データベースは軽量でオープンソースのデータベースであり、現時点では商用サポートはありません。 さまざまなモードで使用できます。
- サーバーモード–JDBCまたはODBCoverTCP/IPを使用したリモート接続用
- 組み込みモード–JDBCを使用するローカル接続用
- 混合モード–これは、ローカル接続とリモート接続の両方にH2を使用できることを意味します
H2は、インメモリデータベースとして実行するように構成できますが、永続的にすることもできます。たとえば、データはディスクに保存されます。 このチュートリアルでは、永続性が有効になっている埋め込みモードでH2データベースを操作するため、ディスクにデータが保存されます。
2. 埋め込まれたH2データベース
H2データベースを使用する場合は、h2およびspring-boot-starter-data-jpaMavenの依存関係を
<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プロパティを使用してストレージモードを構成できます。 このように、データソースURLに mem パラメータを追加し、その後にデータベース名を追加することで、インメモリアプローチを使用するようにH2データベースを設定できます。
spring.datasource.url=jdbc:h2:mem:demodb
ファイルベースの永続モードを使用する場合は、 mem パラメーターの代わりに、ディスクの場所で使用可能なオプションの1つを設定します。 次のセクションでは、これらのオプションについて説明します。
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 キーワードの後にチルダ(〜)を含むデータソースURLを使用します。
spring.datasource.url=jdbc:h2:file:~/demodb
たとえば、Windowsシステムでは、このディレクトリは次のようになります。 C:/ユーザー/
現在のユーザーディレクトリのサブディレクトリにデータベースファイルを保存するには、次の手順に従います。
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の組み込みデータベースがデータを格納する場所を示しました。 また、データベースファイルの場所を構成する方法も学びました。
完全なコードサンプルは、GitHubで入手できます。