H2データベースを使用したSpring Boot

1. 概要

このチュートリアルでは、H2とSpring Bootの使用を検討します。 他のデータベースと同じように、Spring Bootエコシステムでも完全にサポートされています。

参考文献:

link:/java-in-memory-databases [インメモリデータベースのリスト]

Javaアプリケーション用のより一般的なインメモリデータベースのいくつかを構成する方法の簡単なレビュー。
link:/java-in-memory-databases [続きを読む]→

Hibernateでのスプリングブート

Spring BootとHibernate / JPAを統合するための迅速で実用的な入門書。
link:/spring-boot-hibernate [続きを読む]→

2. 依存関係

それでは、_https://search.maven.org/search?q = g:com.h2database%20a:h2 [h2] _および_https://search.maven.org/search?q = aから始めましょう。 spring-boot-starter-data-jpa%20g:org.springframework.boot [spring-boot-starter-data-jpa] _依存関係:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
    <version>1.4.199</version>
</dependency>
もちろん、Spring Bootはこれらのバージョンを管理してくれるので、通常は__version __elementを省略します。

3. データベース構成

デフォルトでは、Spring Bootは*ユーザー名_sa_と空のパスワードでメモリ内ストアに接続するようにアプリケーションを設定します*。 ただし、_application.properties_ファイルに次のプロパティを追加することにより、これらのパラメーターを変更できます。
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
設計上、インメモリデータベースは揮発性であり、アプリケーションを再起動するとデータが失われます。
ファイルベースのストレージを使用して、この動作を変更できます。 これを行うには、_spring.datasource.url:_を更新する必要があります
spring.datasource.url=jdbc:h2:file:/data/demo
*ここでの_ / data / demo_のようなパスは絶対パスである必要があります。*データベースはhttp://www.h2database.com/html/features.html#connection_modes [他のモードで操作]も使用できます。

4. データベース操作

Spring Boot内でH2を使用してCRUD操作を実行することは、他のSQLデータベースと同じであり、https://www.baeldung.com/persistence-with-spring-series [Spring Persistence]シリーズのチュートリアルでカバーできます。この。
それまでの間、_src / main / resources_に__data.sql __fileを追加しましょう。
DROP TABLE IF EXISTS billionaires;

CREATE TABLE billionaires (
  id INT AUTO_INCREMENT  PRIMARY KEY,
  first_name VARCHAR(250) NOT NULL,
  last_name VARCHAR(250) NOT NULL,
  career VARCHAR(250) DEFAULT NULL
);

INSERT INTO billionaires (first_name, last_name, career) VALUES
  ('Aliko', 'Dangote', 'Billionaire Industrialist'),
  ('Bill', 'Gates', 'Billionaire Tech Entrepreneur'),
  ('Folrunsho', 'Alakija', 'Billionaire Oil Magnate');
Spring Bootは、アプリケーションの起動時に__data.sql __を自動的に取得し、構成済みのH2データベースに対して実行します。 これは、テストなどの目的でデータベースをシードするのに適した方法です。

5. H2コンソールへのアクセス

H2データベースには、データベースのコンテンツを参照し、SQLクエリを実行するための埋め込みGUIコンソールがあります。 デフォルトでは、H2コンソールはSpringで有効になっていません。 したがって、有効にするには、次のプロパティを_application.propertiesに追加する必要があります。
spring.h2.console.enabled=true
次に、アプリケーションを起動した後、_http:// localhost:8080 / h2-console_に移動して、ログインページを表示します。 ログインページで、_application.properties:_で使用したのと同じ資格情報を指定します。
link:/uploads/Screenshot-2019-04-13-at-5.21.34-PM-e1555173105246-1024x496-100x48.png%20100w []
接続すると、ページの左側にあるすべてのテーブルと、SQLクエリを実行するためのテキストボックスがリストされた包括的なWebページが表示されます。
link:/uploads/Screenshot-2019-04-13-at-5.25.16-PM-100x52.png%20100w []
Webコンソールには、SQLキーワードを提案するオートコンプリート機能があります。 コンソールは軽量であるため、データベースを視覚的に検査したり、生のSQLを直接実行したりするのに便利です。
さらに、プロジェクトの_application.properties_で次のプロパティを目的の値で指定することにより、コンソールをさらに構成できます。
spring.h2.console.path=/h2-console
spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others=false
上記のスニペットでは、コンソールパスをapplication_ / h2-console_に設定します。これは、実行中のアプリケーションのアドレスとポートに関連しています。 したがって、アプリが_http:// localhost:9001_で実行されている場合、コンソールは:// _ http:// localhost:9001 / h2-console._で利用できます。
さらに、_spring.h2.console.settings.trace_を_false_に設定してトレース出力を防止します。また、_spring _._ h2.console.settings.web-allow-others_を_false_に設定してリモートアクセスを無効にすることもできます。

6. 結論

H2データベースは、Spring Bootと完全に互換性があります。 構成方法と、実行中のデータベースを管理するためにH2コンソールを使用する方法を見てきました。
完全なソースコードは、https://github.com/eugenp/tutorials/tree/master/persistence-modules/spring-boot-persistence-h2 [Github]で入手できます。