(第1回) 手軽に試せるH2データベース入門【H2, Spring Boot2】

H2入門の第1回です。Spring Bootで手軽に使う事ができるデータベースのH2について説明しています。まずはSpring Bootプロジェクトを作成して、H2やSpring Data JPAの使い方を学習する準備をしていきます。Spring Bootの初心者・入門者の方や、独学(個人)で勉強したい方は、参考にしてみてください。

動作環境と今回の目的

最終更新日:2022/11/27

Spring BootでウェブアプリやRest API(Web API)などを開発する場合、DB(データベース)と連携したサービスを開発する事も多いと思います。
そこでここでは、Spring Bootで簡単に試せるH2というデータベースについて、実際にSpring Bootのプロジェクトを作りながら説明していきます。

今回はまず、EclipseでSpring Bootのプロジェクト作成と起動確認までをやっていきます。

・動作環境やバージョンは以下の通りです。
OS:macOS Big Sur(バージョン11.7.1)
開発環境:Eclipse(Pleiades All in One、4.16(2020-06)、Java Full Edition版)
Spring Boot:バージョン2.7.6
Java:11

◾️Eclipse(Pleiades All in One、Java Full Edition版)
Eclipse(Pleiades All in One、Java Full Edition版)は、最初からEclipseの日本語化がされていますし、STS(Spring Tool Suite)やLombokなどの複数の有用なプラグインも入っていて設定済みなので、開発環境構築の手間が省けます。
Eclipse(Pleiades All in One)のインストールについては別ページに書いていますので、そちらを参考にしてください。

【Java初心者】Eclipse(Pleiades All in One)をインスールしてJava開発ができるようにする【macOS版】

ただEclipse(Pleiades All in One)でなくても、これからやっていく事はSTSプラグインを入れたEclipseならできると思いますし、もちろんSTSでもできると思います。

H2データベースとは?

H2はJavaプラットフォーム上で動作するデータベース(DB)です。インストールをする必要がないので、何かDBが必要なウェブアプリを作りたい時や、DB周りのJavaプログラミングを試したりテストしたい場合は、手軽に使えるので便利です。
そして、ある程度本番運用が見えてきたら、接続先のDBをH2からMySqlやOracleなどに変更すれば良いわけです。

H2はインストールする必要がないと書きましたが、データの保存先はインメモリかファイルベースです。データを永続的に保存する必要がないならインメモリでいいし(アプリ終了時にデータはなくなる)、データを残しておきたいなら(永続的に保存したいなら)ファイルベースにします。

そして、Spring Bootでは、このH2を簡単に組み込んで扱う事ができるので、DBを必要とするSpring BootのウェブアプリやREST API(Web API)などを試しに作りたいなら、H2を使用してみるのも良いと思います。

Spring Data JPAとは?

Spring Frameworkでは、DBアクセス機能にSpring Data JPAを用意しています。JPA(Java Persistence API)は、JavaのDB操作の仕様(フレームワーク)で、エンティティオブジェクトとDBテーブルのORマッピング、クエリ言語のJPQLなどがあります。
そして、Spring Data JPAはそのJPAを扱いやすくするための機能です。

Spring Data APIを使う事で、DB周りのプログラミングのコード量(労力)を削減できる事ができます。具体的には、ORマッピングだったり、SQLを書く必要がなくDBのCRUD操作ができます。また、SQLだけでなく、DBアクセスのためのRepositoryクラスの実装をしないでもCRUD操作ができます。
もちろん、SQL(やJSQL)を使う事はできるので、単純でないDBアクセスならSQLを書く必要が出てくると思います。

ここでは、Spring BootアプリでSpring Data JPAを使ったJavaプログラミングをして、H2データベースにアクセスする事を目標にしています。

◾️Spring Data JDBC
Spring FrameworkのDBアクセス機能には、Spring Data JPAの他にSpring Data JDBCがあります。
Spring Data JPAとSpring Data JDBCのどちらを使うかは人それぞれ、プロジェクトそれぞれだと思いますが、Spring Data JDBCはDB操作のSQLを書く必要があるため、Spring Data JPAの方がコード量は少なくて済みます。

Spring Bootのプロジェクトを作成する

それではH2を試すために、Eclipse(Pleiades All in One)でSpring Bootのプロジェクトを作成します。

EclipseでSpring Bootプロジェクトの新規作成については別ページで書いていますので、そちらを参考にしてください。
Sprint Boot2で初めてのJavaのウェブアプリ開発

今回、Spring Bootプロジェクトの作成時に選択する必要な依存関係のライブラリは5つです。

  • Spring Boot Devtools
  • Lombok
  • Spring Data JPA
  • H2 Database
  • Spring Web
H2、Spring Data JPA用のSpring Bootプロジェクト作成

H2とSpring Data JPAを試すだけなら"H2 Database"と"Spring Data JPA"の2つでできますが、"Lombok"はエンティティクラスのコード量を削減するため、"Spring Boot Devtools"と"Spring Web"は、H2データベースをブラウザ上で管理・操作するためのツールを使うために使います。

Spring Boot 本をAmazonで探す [広告]

アプリの実行と動作確認

プロジェクトの作成が完了したら、Spring Bootのアプリを起動してみます。アプリを起動するとは言っても、Spring Bootのひな形プロジェクトができただけですので、一応の起動確認です。

今回作成したプロジェクト名は適当に「test-h2」としました。
Spring Bootアプリの起動

プロジェクトを作成すると、JavaファイルでTestH2Application.javaというファイルが自動で作成されます。
そのファイル内にmainメソッド(エントリポイント)がありますので、このファイルを右クリック->実行->Spring Bootアプリケーションを選択するとアプリが起動します。(2回目以降の起動なら、Eclipseの上部メニューバーにある起動ボタンを押して簡単に起動できます。)
アプリが起動すればEclipseのコンソールタブに起動ログが出力されます。

あと、H2のブラウザ管理ツールの"H2 Console"も確認しておきます。プロジェクト作成時にライブラリの依存関係で"Spring Web"を選択するとTomcatがプロジェクトに内蔵され、"H2 Database"と"Spring Boot Devtools"を選択すると"H2 Console"がプロジェクトで使えるようになります。
"H2 Console"のアクセスURLは「http://localhost:8080/h2-console 」です。
H2 Consoleの確認

初期表示画面は英語ですが、左上のボックスから日本語を選択して変更できます。そして、この画面からログインしてH2データベースにあるデータを見たり操作する事ができます。(今はまだH2 Consoleに接続ログインできないです。DBのテーブルも作ってないですし。)

あと、起動したアプリを終了するには、Eclipseのコンソールタブ上部にある赤い停止ボタンを押せば終了できます。

最後に、次回

以上簡単でしたが、H2データベース入門のスタートとしてH2を試すためのSpring Bootプロジェクトの作成までをやってみました。
今後、実際にH2をSpring Bootで試したみたり、H2 Consoleを使用してみたり、Spring Data JPAを試すためのJavaコードを書いていこうと思います。

次回は、H2を試すためのSpring Bootプロジェクトを作成したので、application.propertiesでH2の接続設定、Spring Data JPAのエンティティクラスの作成、data.sqlで初期データ作成などをやっていきます。

(第2回) H2の接続設定、エンティティクラスの作成、data.sqlで初期データ作成
H2データベース入門【Spring Boot】トップに戻る

Kindle Unlimitedなら対象の本が定額で読み放題 [広告]
対象本には、プログラミングなどのIT関連本、マンガ、雑誌、ビジネス書などがたくさんあります!

Spring Bootの記事

Spring Boot2で日記投稿ウェブアプリ開発入門トップページ
Javaで人気のフレームワークのSpring Bootでシンプルな日記投稿ウェブアプリの開発しながら、入門者・初心者にもわかりやすいように説明しています。DBを使用して、新規投稿、編集、削除、一覧表示という基本的なCRUD機能を備えたアプリです。