H2データベースを使うための設定まとめ
H2データベースを開発環境で使うための設定
2. H2データベースとは
H2データベースはJavaで書かれた軽量なデータベースで、組み込みモードとサーバーモードで動作します。開発やテストの際に、簡単にセットアップできるため、多くのプロジェクトで利用されています。
今回はそんなH2データベースの設定の仕方をまとめます。
H2データベースの依存関係を追加
Mavenの場合の依存関係の追加
まず、Spring BootプロジェクトにH2データベースを追加します。Eclipseでプロジェクトを開き、pom.xml
ファイルを開きます。以下の依存関係を追加します。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
この依存関係を追加することで、プロジェクトにH2データベースが組み込まれます。
Gradleの場合の依存関係の追加
Gradleの場合、H2データベースの依存関係を追加するには、build.gradle
ファイルに以下の設定を追加します。
dependencies {
implementation 'com.h2database:h2'
}
- implementation 'com.h2database:h2': これがH2データベースの依存関係を追加するための設定です。
implementation
: Gradleに対してこの依存関係が実行時に必要であることを伝えます。'com.h2database:h2'
: H2データベースのグループIDとアーティファクトIDを示しています。
build.gradle
ファイルにこの依存関係を追加した後、Gradleをリフレッシュすることで、H2データベースがプロジェクトに組み込まれます。
H2コンソールの有効化
H2データベースのWebコンソールを使用すると、データベースの内容を簡単に確認できます。application.properties
に以下の設定を追加して、H2コンソールを有効化します。
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
これで、H2コンソールにアクセスできるようになります。
データベース接続の設定
application.properties
にデータベース接続の設定を追加します。
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
この設定では、メモリ上にtestdb
という名前のデータベースを作成し、H2ドライバを使用して接続します。
設定項目の説明
以下の設定項目について、それぞれの役割を説明します。
- spring.datasource.url=jdbc:h2:mem:testdb: データベースに接続するためのURLです。
mem
はメモリ内データベースを意味し、testdb
はデータベースの名前です。 - spring.datasource.driverClassName=org.h2.Driver: データベースに接続するためのドライバクラスです。
- spring.datasource.username=sa: データベースに接続する際のユーザー名です。
- spring.datasource.password=: データベースに接続する際のパスワードです。今回は空欄で、デフォルトのユーザー設定を使用します。
- spring.jpa.database-platform=org.hibernate.dialect.H2Dialect: JPAを使う際に、H2データベース用の方言(ダイアレクト)を指定します。
H2コンソールへのアクセス
プロジェクトを実行し、ブラウザで http://localhost:8080/h2-console
にアクセスします。
JDBC URL
に jdbc:h2:mem:testdb
と入力し、Connect
ボタンをクリックします。これで、H2データベースのコンソールにアクセスできます。
テーブルの作成とデータの挿入
@EntityクラスからDBの自動生成
@Entityアノテーションを使ってクラスを定義すると、Spring Bootがデータベースに対応するテーブルを自動的に作成します。
これは、Spring Bootのspring.jpa.hibernate.ddl-auto
プロパティによって制御されます。このプロパティは、データベースのテーブルを自動的に生成したり、既存のテーブルを更新したりするための設定です。
例えば、application.properties
に以下のように設定すると、アプリケーションの起動時にデータベースのテーブルが自動で更新されます。
spring.jpa.hibernate.ddl-auto=update
ddl-auto
の値には他にもcreate
、create-drop
、validate
などがあり、データベースのテーブルをどのように扱うかを制御します。
コンソールからDB作成
コンソールからSQLを使ってテーブルを作成し、データを挿入してみましょう。例えば、以下のSQLを実行してテーブルを作成します。
CREATE TABLE sample_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
次に、データを挿入します。
INSERT INTO sample_table (name) VALUES ('Test Data');
SELECT
文でデータが挿入されているか確認しましょう。
SELECT * FROM sample_table;
ログにSQLを表示する
下記設定をapplication.propertiesなどの設定ファイルに追記する。
spring.jpa.show-sql=を記述する
役割: JPA が生成する SQL クエリをコンソールに表示するかどうかを制御します。
- true: SQLクエリをコンソールに表示します。
- false: SQLクエリをコンソールに表示しません(デフォルト)。
用途: 開発中に実行されるSQLを確認するために利用されます。
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=を記述する
役割: Hibernate が生成する SQL クエリを整形(インデントや改行の追加)して表示します。
- true: 整形されたSQLクエリを出力します。
- false: 整形せず、そのまま出力します(デフォルト)。
用途: SQLの可読性を向上させ、開発者が理解しやすい形で表示するために使います。
注意: この設定は spring.jpa.show-sql=true
と一緒に使う必要があります。
spring.jpa.properties.hibernate.format_sql=true
メモリ上にDBを作成するとは
H2データベースはメモリ上にDBを作成することになります。メモリ上のデータベースとは、データがコンピュータのメモリ(RAM)に保存されるデータベースです。ディスクにデータを保存する通常のデータベースと異なり、データはメモリ内でのみ保持されます。
メリット: 非常に高速で、テストや開発のための一時的なデータベースとして便利です。
デメリット: アプリケーションを再起動したり、メモリがクリアされるとデータが消えてしまいます。
利用シーン: 開発やテストの際に、クリーンな状態のデータベースを毎回作成したい場合に使用します。
8. まとめ
これで、H2データベースを開発環境で使用するための設定が完了しました。H2を使うことで、開発中のデータベース操作が容易になり、素早くテストを行うことができます。
コメント
0 件のコメント :
コメントを投稿