Java開発において、データベース(DB)操作の習得は必須です。今回はMavenを使用してプロジェクトを構築し、アプリ終了と共にデータが消えるH2インメモリデータベースを、Javaプログラムから制御する手順を解説します。
1. 開発環境(Mac)
今回の検証は以下の最新環境で実施しました。Macユーザーの方は、ご自身の環境と照らし合わせてみてください。
OS: macOS Sequoia 15.6.1
Java: javac 25.0.1
Maven: Apache Maven 3.9.12
Shell: zsh
2. Mavenプロジェクトの作成
まずはターミナルを開き、プロジェクトの雛形を作成します。
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=h2-demo \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
作成された h2-demo ディレクトリに移動します。
cd h2-demo
3. pom.xml の編集
H2データベースを使用するために、ライブラリの依存関係を追加します。pom.xml を開き、<dependencies> セクションに以下を追記してください。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.2.224</version>
</dependency>
4. Javaプログラムの実装:インメモリDBの制御
src/main/java/com/example/App.java を以下の内容に書き換えます。
package com.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class App {
public static void main(String[] args) {
// メモリ上に「db_demo」を作成(接続した瞬間に生成される)
String url = "jdbc:h2:mem:db_demo";
String user = "sa";
String password = "";
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement()) {
System.out.println("--- DB接続完了 (macOS Environment) ---");
// 1. テーブル作成
stmt.execute("CREATE TABLE EMPLOYEES (ID INT PRIMARY KEY, NAME VARCHAR(255))");
System.out.println("Table 'EMPLOYEES' を作成しました。");
// 2. データの挿入
stmt.execute("INSERT INTO EMPLOYEES VALUES(101, '田中 太郎')");
stmt.execute("INSERT INTO EMPLOYEES VALUES(102, '鈴木 次郎')");
// 3. データの抽出 (SELECT)
ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEES");
while (rs.next()) {
System.out.println("社員番号: " + rs.getInt("ID") + ", 氏名: " + rs.getString("NAME"));
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("--- アプリを終了します。メモリ上のデータは破棄されました ---");
}
}
5. Macでの実行と結果確認
コマンドの実行場所
これら全てのコマンドは、ステップ1で作成したプロジェクトのルートディレクトリ(h2-demo)の直下で実行してください。
# 現在の場所を確認
pwd
# コンパイルと実行
mvn compile
mvn exec:java -Dexec.mainClass="com.example.App"
実行結果の確認
ターミナルに次が出力されれば、正常に動作しています。
--- DB接続完了 (macOS Environment) ---
Table 'EMPLOYEES' を作成しました。
社員番号: 101, 氏名: 田中 太郎
社員番号: 102, 氏名: 鈴木 次郎
--- アプリを終了します。メモリ上のデータは破棄されました ---
6. 【検証メモ】なぜ「消える」のか?
インメモリ型の仕組み: H2の接続URLに
jdbc:h2:mem:と記述すると、データはディスクではなく**メモリ(RAM)**上に置かれます。実データの不在: 実行後、Finderでフォルダ内を確認しましたが、
.dbファイル等は一切作成されていませんでした。メリット: 「実験のたびに環境を汚さない」「爆速で動作する」という、Macをクリーンに保ちたい開発者にとって理想的な学習環境です。
まとめ
Mavenを使えば、ライブラリ管理は
pom.xml一枚で完結。H2インメモリモードは、環境構築不要でSQLの練習に最適。
最新の macOS Sequoia & Java 25 環境でもスムーズに動作。
この記事が、Javaでのデータベース学習の第一歩になれば幸いです。
0 件のコメント:
コメントを投稿