H2 Database

H2 Databaseとは、Javaプラットフォーム上で動作するリレーショナルデータベースである。

H2 Databaseのインストール方法

  1. H2 Database Engineのサイト(http://www.h2database.com/)をWebブラウザで開く。
  2. Windows Installerをダウンロードする。
  3. ダウンロードしたWindows Installerを実行する。

H2 Databaseの接続方法

  1. Windowsのスタートメニューから[すべてのプログラム] - [H2] - [H2 Console]を選択する。
  2. 「接続」ボタンをクリックする。

Maven

MavenからH2 Databaseを利用できるようにするには、pom.xmlに次の依存関係を追記する。

<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <version>1.4.200</version>
  <scope>test</scope>
</dependency>

データ型

H2 Databaseには次に示すデータ型がある。

H2 Databaseのデータ型
データ型 マップ
INT java.lang.Integer
BOOLEAN java.lang.Boolean
TINYINT java.lang.Byte
SMALLINT java.lang.Short
BIGINT java.lang.Long
IDENTITY java.lang.Long
DECIMAL java.math.BigDecimal
DOUBLE java.lang.Double
REAL java.lang.Float
TIME java.sql.Time
TIME WITH TIME ZONE java.time.OffsetTime
DATE java.sql.Date
TIMESTAMP java.sql.Timestamp
TIMESTAMP WITH TIME ZONE org.h2.api.TimestampWithTimeZone
BINARY byte[]
OTHER java.lang.Object
VARCHAR java.lang.String
VARCHAR_IGNORECASE java.lang.String
CHAR java.lang.String
BLOB java.sql.Blob
CLOB java.sql.Clob
UUID java.util.UUID
ARRAY java.lang.Object[]
ENUM java.lang.Integer
GEOMETRY org.locationtech.jts.geom.Geometry
JSON byte[]
INTERVAL org.h2.api.Interval

組込みモード

H2 Databaseの組込みモードでは、ローカルのデータベースファイルに直接アクセスする。サービスを公開することはできない。

組込みモード接続
接続文字列 説明
jdbc:h2:~/test ユーザのホームディレクトリの'test'
jdbc:h2:/data/test /dataディレクトリの'test'
jdbc:h2:/data/test 現在の作業ディレクトリ

インメモリ

H2 Databaseはインメモリモードで動作させることができる。インメモリの場合、データはファイルではなくメモリに保持される。

インメモリ接続
接続文字列 説明
jdbc:h2:mem:test 1つのプロセス内の複数の接続
jdbc:h2:mem 匿名プライベートの1つの接続

サーバモード

サーバモードの場合、H2 Databaseはデータベースサーバとして動作する。ネットワークを通じて、サービスを外部に公開することができる。

サーバモード接続
接続文字列 説明
jdbc:h2:tcp://localhost/~/test ユーザホームディレクトリ
jdbc:h2:tcp://localhost//data/test 絶対ディレクトリ

データベース作成

デフォルトで新しいデータベースが自動的に作成される。

使い方

H2 Consoleツールを起動するには、jarファイルをダブルクリックするか、次のうちいずれかを実行する。

最後の接続を閉じると、データベースが閉じる。

文字コード

H2 Databaseでは文字コードとしてUnicode UTF-8が使われる。他の文字コードに変更することはできない。

サンプル

JDBCを使ってH2 Databaseに接続するサンプルを次に示す。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Example {
  static final String JDBC_DRIVER = "org.h2.Driver";
  static final String URL = "jdbc:h2:~/test";
  static final String USER = "tsuka";
  static final String PASS = "";

  public static void main(String[] args) {
    Connection conn = null;
    Statement stmt = null;

    try {
      Class.forName(JDBC_DRIVER);
      conn = DriverManager.getConnection(URL, USER, PASS);
      stmt = conn.createStatement();

      // SQL query or update
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      try {
        if (stmt != null) {
          stmt.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
      try {
        if (conn != null) {
          conn.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

参考文献

H2 Database Engine

MvnRepository (2021) H2 Database Engine