logo

Spring Boot H2 データベース

インメモリデータベースとは何ですか

インメモリ データベースは、データの保存にディスク領域ではなくシステム メモリに依存します。メモリアクセスはディスクアクセスよりも速いためです。データを永続化する必要がない場合は、インメモリ データベースを使用します。インメモリ データベースは組み込みデータベースです。デフォルトでは、インメモリ データベースは揮発性であり、アプリケーションを再起動すると、保存されているデータはすべて失われます。

広く使用されているインメモリ データベースは次のとおりです。 H2、HSQLDB (ハイパーSQLデータベース) そして アパッチダービー。 構成を自動的に作成します。

永続性とインメモリ データベース

永続データベースは、データを物理メモリに永続化します。データベース サーバーがバウンスした場合でも、データは利用できます。一般的な永続データベースには、次のようなものがあります。 オラクル、 MySQL 、ポストグル、

Pythonの差分

の場合、 インメモリデータベース、 データストア システムメモリ 。プログラムを閉じるとデータが失われます。役に立ちます 少し ■ (概念実証)、本番アプリケーション向けではありません。広く使用されているインメモリ データベースは次のとおりです。 H2.

H2データベースとは

H2 です 組み込み、オープンソース、 そして メモリ内 データベース。で書かれたリレーショナル データベース管理システムです。 ジャワ 。それは クライアントサーバー 応用。一般的に使用されるのは、 単体テスト 。データをディスク上に保持するのではなく、メモリにデータを保存します。

利点

  • ゼロ構成
  • 使い方は簡単です。
  • 軽くて速いです。
  • 実データベースとメモリ内データベースを切り替えるための簡単な構成を提供します。
  • 標準 SQL および JDBC API をサポートします。
  • データベース内で管理するための Web コンソールを提供します。

H2 データベースの構成

アプリケーションで H2 データベースを使用したい場合は、pom.xml ファイルに次の依存関係を追加する必要があります。

 com.h2database h2 runtime 

依存関係を追加した後、設定する必要があります データ ソース URL、ドライバー クラス名、ユーザー名、 そして パスワード H2データベースの。 Spring Boot は、これらのプロパティを構成する簡単な方法を提供します。 アプリケーションのプロパティ ファイル。

 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 

の中に spring.datasource.url 財産、 インメモリデータベースの名前であり、 テストデータベース は、H2 がデフォルトで提供するスキーマの名前です。独自のスキーマとデータベースを定義することもできます。デフォルトのユーザー名は次のとおりです の上 空のパスワードは 空の パスワード。ユーザー名とパスワードを変更したい場合は、これらの値をオーバーライドできます。

データを H2 データベースに保存する

H2 データベースにデータを永続化したい場合は、データをファイルに保存する必要があります。同じことを実現するには、データソース URL プロパティを変更する必要があります。

 #persist the data spring.datasource.url=jdbc:h2:file:/data/sampledata spring.datasource.url=jdbc:h2:C:/data/sampledata 

上記のプロパティでは、 サンプルデータ はファイル名です。

スキーマの作成とデータの入力

を作成することでスキーマを定義できます。 SQL 内のファイル リソース フォルダー (src/main/resource)。

スキーマ.sql

 DROP TABLE IF EXISTS CITY; CREATE TABLE CITY ( City_code INT AUTO_INCREMENT PRIMARY KEY, city_name VARCHAR(50) NOT NULL, city_pincode INT(8) NOT NULL ); 

を作成することでテーブルにデータを入力できます。 SQL 内のファイル リソース フォルダー (src/main/resource)。

データ.SQL

 INSERT INTO CITY VALUES (11, 'Delhi', 110001); INSERT INTO CITY VALUES (12, 'Kanpur', 208001); INSERT INTO CITY VALUES (13, 'Lucknow', 226001); 

Spring Boot は自動的に データ.SQL ファイルを作成し、アプリケーションの起動時に H2 データベースに対して実行します。

H2 コンソール

デフォルトでは、H2 データベースのコンソール ビューは無効になっています。 H2 データベースにアクセスする前に、次のプロパティを使用してデータベースを有効にする必要があります。

Javaの擬似コード
 #enabling the H2 console spring.h2.console.enabled=true 

H2 コンソールを有効にすると、URL http://localhost:8080/h2-console を呼び出してブラウザで H2 コンソールにアクセスできるようになります。次の図は、H2 データベースのコンソール ビューを示しています。

Spring Boot H2 データベース

上のスクリーンショットでは、という名前の独自のデータベースを定義しています。 ジャバトポイント

Spring Boot H2 の例

H2 データベースを使用して Spring Boot アプリケーションをセットアップしてみましょう。

ステップ1: Spring Initializr http://start.spring.io を開きます。

ステップ2: Spring Boot バージョンを選択します 2.3.0.M1。

ステップ2: を提供します。 グループ 名前。私たちが提供したのは、 com.javatpoint。

ステップ 3: を提供します。 アーティファクト 同上。私たちが提供したのは、 スプリングブート H2 データベースの例。

ステップ5: 依存関係を追加する Spring Web、Spring Data JPA、 そして H2 データベース。

ステップ6: クリックしてください 生成する ボタン。 「生成」ボタンをクリックすると、プロジェクトがラップされます。 ファイルを作成し、ローカル システムにダウンロードします。

Spring Boot H2 データベース

ステップ 7: 抽出する Jar ファイルを選択し、STS ワークスペースに貼り付けます。

ステップ8: 輸入 プロジェクトフォルダーをSTSにコピーします。

ファイル -> インポート -> 既存の Maven プロジェクト -> 参照 -> フォルダー spring-boot-h2-database-example を選択 -> 完了

キャットティンプ

インポートには時間がかかります。

ステップ9: という名前のパッケージを作成します。 com.javatpoint.model フォルダ内に src/メイン/java。

ステップ 10: パッケージ内にモデルクラスを作成する com.javatpoint.model。 という名前のモデルクラスを作成しました。 学生。 Books クラスでは、次のことを行いました。

  • 4 つの変数を定義する ID、年齢、名前、 そして
  • ゲッターとセッターを生成します。
    ファイルを右クリック→「ソース」→「ゲッターとセッターの生成」を選択します。
  • クラスを次のようにマークします 実在物 注釈を使用して @実在物。
  • クラスを次のようにマークします テーブル 注釈を使用して名前を付ける @テーブル。
  • 各変数を次のように定義します カラム 注釈を使用して @カラム。

Student.java

 package com.javatpoint.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; //mark class as an Entity @Entity //defining class name as Table name @Table public class Student { //mark id as primary key @Id //defining id as column name @Column private int id; //defining name as column name @Column private String name; //defining age as column name @Column private int age; //defining email as column name @Column private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 

ステップ 11: という名前のパッケージを作成します。 com.javatpoint.controller フォルダ内に src/メイン/java。

ステップ 12: パッケージ内にコントローラークラスを作成する com.javatpoint.controller 。という名前のコントローラークラスを作成しました。 StudentController 。 StudentController クラスでは、次のことを行いました。

  • クラスを次のようにマークします レストコントローラー 注釈を使用して @RestController。
  • 自動配線 学生サービス アノテーションを使用したクラス @Autowired
  • 次のメソッドを定義します。
      getAllStudent():すべての生徒のリストを返します。
  • getStudent():パス変数で指定した生徒の詳細を返します。アノテーション @PathVariable を使用して、引数として id を渡しました。注釈は、メソッド パラメーターが URI テンプレート変数にバインドされる必要があることを示します。deleteStudent():パス変数で指定した特定の生徒を削除します。saveStudent():生徒の詳細が保存されます。注釈 @RequestBody は、メソッド パラメーターを Web リクエストの本文にバインドする必要があることを示します。

StudentController.java

 package com.javatpoint.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.javatpoint.model.Student; import com.javatpoint.service.StudentService; //creating RestController @RestController public class StudentController { //autowired the StudentService class @Autowired StudentService studentService; //creating a get mapping that retrieves all the students detail from the database @GetMapping('/student') private List getAllStudent() { return studentService.getAllStudent(); } //creating a get mapping that retrieves the detail of a specific student @GetMapping('/student/{id}') private Student getStudent(@PathVariable('id') int id) { return studentService.getStudentById(id); } //creating a delete mapping that deletes a specific student @DeleteMapping('/student/{id}') private void deleteStudent(@PathVariable('id') int id) { studentService.delete(id); } //creating post mapping that post the student detail in the database @PostMapping('/student') private int saveStudent(@RequestBody Student student) { studentService.saveOrUpdate(student); return student.getId(); } } 

ステップ 13: という名前のパッケージを作成します。 com.javatpoint.service フォルダ内に src/メイン/java。

ステップ 14: を作成します サービス クラス。という名前のサービスクラスを作成しました。 学生サービス パッケージの中に com.javatpoint.service。

StudentService.java

 package com.javatpoint.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javatpoint.model.Student; import com.javatpoint.repository.StudentRepository; @Service public class StudentService { @Autowired StudentRepository studentRepository; //getting all student records public List getAllStudent() { List students = new ArrayList(); studentRepository.findAll().forEach(student -> students.add(student)); return students; } //getting a specific record public Student getStudentById(int id) { return studentRepository.findById(id).get(); } public void saveOrUpdate(Student student) { studentRepository.save(student); } //deleting a specific record public void delete(int id) { studentRepository.deleteById(id); } } 

ステップ 15: という名前のパッケージを作成します。 com.javatpoint.リポジトリ フォルダ内に src/メイン/java。

ステップ 16: を作成します リポジトリ インターフェース。という名前のリポジトリ インターフェイスを作成しました。 StudentRepository パッケージの中に com.javatpoint.リポジトリ。 それは、 Crudリポジトリ インターフェース。

StudentRepository.java

 package com.javatpoint.repository; import org.springframework.data.repository.CrudRepository; import com.javatpoint.model.Student; public interface StudentRepository extends CrudRepository { } 

次に、データソースを構成します URL、ドライバークラス名、ユーザー名、 そして パスワード、 の中に アプリケーションのプロパティ ファイル。

ステップ 17: を開きます アプリケーションのプロパティ ファイルを作成し、次のプロパティを構成します。

アプリケーションのプロパティ

 spring.datasource.url=jdbc:h2:mem:javatpoint spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect #enabling the H2 console spring.h2.console.enabled=true 

注: H2 コンソールを有効にすることを忘れないでください。

すべてのクラスとパッケージを作成すると、プロジェクト ディレクトリは次のようになります。

Spring Boot H2 データベース

次に、アプリケーションを実行します。

Javaの部分文字列の例

ステップ 18: 開ける SpringBootH2DatabaseExampleApplication.java ファイルを作成し、Java アプリケーションとして実行します。

SpringBootH2DatabaseExampleApplication.java

 package com.javatpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootH2DatabaseExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootH2DatabaseExampleApplication.class, args); } } 

次のステップでは、残りのクライアントを使用します 郵便屋さん を送信するための 役職 そして 得る リクエスト Postman がシステムにインストールされていない場合は、次の手順に従います。

  • ポストマンをダウンロードする https://www.getpostman.com/downloads/ またはブラウザにGoogle Chrome拡張機能を追加します https://bit.ly/1HCOCwF
  • ポストマンを起動して、 サインアップ 。ユーザー名を作成します。という名前のユーザーを作成しました ジャバトポイント そしてクリックしました 提出する

ステップ 19: を開きます 郵便屋さん そして次のことを実行します。

  • を選択 役職
  • URL http://localhost:8080/student を呼び出します。
  • を選択
  • コンテンツタイプを選択してください JSON (アプリケーション/json)。
  • データを挿入します。本文に次のデータを挿入しました。
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • クリックしてください 送信

リクエストが正常に実行されると、 ステータス:200 OK 。これは、レコードがデータベースに正常に挿入されたことを意味します。

同様に、次のデータを挿入しました。

 { 'id': '002', 'age': '24', 'name': 'Vadik', 'email': '[email protected]' } { 'id': '003', 'age': '21', 'name': 'Prateek', 'email': '[email protected]' } { 'id': '004', 'age': '25', 'name': 'Harsh', 'email': '[email protected]' } { 'id': '005', 'age': '24', 'name': 'Swarit', 'email': '[email protected]' } 

H2 コンソールにアクセスしてデータを確認してみましょう。

ステップ 20: ブラウザを開いて、URL http://localhost:8080/h2-console を呼び出します。クリックしてください 接続する 以下に示すように、ボタンをクリックします。

Spring Boot H2 データベース

をクリックした後、 接続する ボタンをクリックすると、 学生 以下に示すように、データベース内のテーブル。

Spring Boot H2 データベース

ステップ21: クリックしてください 学生 テーブルをクリックし、 走る ボタン。この表は、本文に挿入したデータを示しています。

Spring Boot H2 データベース

ステップ22: 郵便配達員を開いて、 得る リクエスト。データベースに挿入したデータを返します。

Spring Boot H2 データベース

を送信しましょう 得る URL http://localhost:8080/student/{id} でリクエストします。 URL http://localhost:8080/student/3 を呼び出しました。 ID が 3 の学生の詳細を返します。

配列と配列リストの違い
Spring Boot H2 データベース

同様に、 消去 リクエスト。 ID が 2 の学生レコードを削除するとします。

生徒の記録を削除するには、 消去 URL http://localhost:8080/student/2 でリクエストします。 ID が次の学生であることがわかります。 2 データベースから削除されました。

Spring Boot H2 データベース
H2 データベースのサンプル プロジェクトをダウンロード