2026年2月1日日曜日

【Java】Maven×H2で作る「消える」データベース環境:macOS Sequoiaでの検証ガイド

 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プロジェクトの作成


まずはターミナルを開き、プロジェクトの雛形を作成します。

Bash
mvn archetype:generate \
  -DgroupId=com.example \
  -DartifactId=h2-demo \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false

作成された h2-demo ディレクトリに移動します。

Bash
cd h2-demo


3. pom.xml の編集


H2データベースを使用するために、ライブラリの依存関係を追加します。pom.xml を開き、<dependencies> セクションに以下を追記してください。

XML
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.2.224</version>
</dependency>


4. Javaプログラムの実装:インメモリDBの制御


src/main/java/com/example/App.java を以下の内容に書き換えます。

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)の直下で実行してください。

Bash
# 現在の場所を確認
pwd

# コンパイルと実行
mvn compile
mvn exec:java -Dexec.mainClass="com.example.App"

実行結果の確認

ターミナルに次が出力されれば、正常に動作しています。

Plaintext
--- DB接続完了 (macOS Environment) ---
Table 'EMPLOYEES' を作成しました。
社員番号: 101, 氏名: 田中 太郎
社員番号: 102, 氏名: 鈴木 次郎
--- アプリを終了します。メモリ上のデータは破棄されました ---


6. 【検証メモ】なぜ「消える」のか?


  1. インメモリ型の仕組み: H2の接続URLに jdbc:h2:mem: と記述すると、データはディスクではなく**メモリ(RAM)**上に置かれます。

  2. 実データの不在: 実行後、Finderでフォルダ内を確認しましたが、.db ファイル等は一切作成されていませんでした。

  3. メリット: 「実験のたびに環境を汚さない」「爆速で動作する」という、Macをクリーンに保ちたい開発者にとって理想的な学習環境です。




まとめ


  • Mavenを使えば、ライブラリ管理は pom.xml 一枚で完結。

  • H2インメモリモードは、環境構築不要でSQLの練習に最適。

  • 最新の macOS Sequoia & Java 25 環境でもスムーズに動作。


この記事が、Javaでのデータベース学習の第一歩になれば幸いです。




0 件のコメント:

コメントを投稿

【Java】Maven×H2で作る「消える」データベース環境:macOS Sequoiaでの検証ガイド

 Java開発において、データベース(DB)操作の習得は必須です。今回は Maven を使用してプロジェクトを構築し、アプリ終了と共にデータが消える H2インメモリデータベース を、Javaプログラムから制御する手順を解説します。 1. 開発環境(Mac) 今回の検証は以下の最新...