English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot H2データベースを使用する場合

メモリデータベースとは何か

メモリデータベースはシステムメモリに依存しており、ディスクデータストレージ空間ではありません。なぜなら、メモリアクセスはディスクアクセスよりも速いからです。データを永続化しない場合、メモリデータベースを使用します。メモリデータベースはインラインデータベースです。デフォルトでは、メモリデータベースは非持続的で、アプリケーションを再起動すると、すべての保存されたデータが失われます。

広く使用されているメモリデータベースは、 H2、HSQLDB (HyperSQLデータベース) および Apache Derby。 それが自動的に設定を作成します。

持久性とメモリデータベース

持久性データベースはデータを物理メモリに永続的に保存します。データベースサーバーが戻るときでも、データは利用可能です。人気のある持久性データベースには、 Oracle、MySQL、Postgres、など。

それについて メモリデータベースにデータが保存されています。 システムメモリで使用されています。プログラムが終了すると、データが失われます。それは POC (概念証明)が非常に役立ち、生産アプリケーションには適していません。広く使用されているメモリデータベースは H2。

H2データベースを使用する場合

H2 内蔵、オープンソースおよび メモリデータベース。これは、Javaで書かれた関係データベース管理システムです。これは クライアント/サーバーで使用されます。 アプリケーション。これは、通常、サーバーやクライアント、データベースで使用されます。ユニットテスト

。データはメモリに保存され、ディスクにデータを永続化することはありません。

利点 設定不要です。 使いやすいです。 軽量で高速です。 簡単な設定で、実際のデータベースとメモリデータベース間で切り替えることができます。 標準のSQLとJDBC APIをサポートしています。

提供されたWebコンソールを使用して、データベース内でデータを維持できます。2データベースを使用する場合

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

<dependency>
<groupId>com.h2database2database</<groupId>com.h
groupId>2scope>/<artifactId>h
artifactId>/<scope>runtime<
scope>/<

dependency>2依存関係を追加後、H データベースのおよび パスワードデータソースURL、ドライバークラス名、ユーザー名を設定するためには、 application.properties 。Spring Bootは、データソースURL、ドライバークラス名、ユーザー名を簡単に設定する方法を提供しています。

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 属性では、 mem メモリデータベースの名前であり、 testdb メモリデータベースの名前です。デフォルトでは、H2提供されたスキーマ。また、独自のスキーマとデータベースを定義できます。デフォルトのユーザー名は sa 、空白パスワードは パスワード。ユーザー名とパスワードを変更する場合は、これらの値をオーバーライドできます。

データをH2データベース内に保持する場合

データをH2データベース内で、データをファイルに保存する必要があります。そのためには、データソースのURL属性を変更する必要があります。

#データ保存
spring.datasource.url=jdbc:h2:file:/データ/sampledata
spring.datasource.url=jdbc:h2:C:/データ/sampledata

上記の属性では、 sampledata ファイル名です。

スキーマ構造を作成しデータをフィール

私たちは、以下のように定義することができます リソース フォルダー(src)に作成 SQL ファイル作成スキーマ/src/resource)。

schema.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,
00

以下で、以下を設定できます。 リソース フォルダ(src/src/リソース)にフォルダを作成します。 SQL ファイルを作成してテーブルにデータを入力します。

Spring Bootはアプリケーションの起動時に自動的に以下を取得します。

INSERT INTO CITY VALUES ('Delhi', 110INSERT INTO CITY VALUES ('Lucknow',100
INSERT INTO CITY VALUES ('Delhi', 208INSERT INTO CITY VALUES ('Lucknow',100
INSERT INTO CITY VALUES ('Kanpur', 226INSERT INTO CITY VALUES ('Lucknow',100

); Spring Bootはアプリケーションの起動時に自動的に以下を取得します。 data.sql2ファイルを開き、H

H2データベースを起動します。

コンソールが無効になっています。2デフォルトでは、H2データベースのコンソールビュー。H

#Hを有効にする2
consolespring.h2.console.enabled=true

データベースが有効化されたら、以下の属性を使用して有効化する必要があります。2一旦H//localhost:8080/h2-consoleをブラウザでアクセスする方法を示しています。2コンソール。以下の図はH2データベースのコンソールビューを定義しました。

上のスクリーンショットでは、以下の名前の w3codebox のデータベース。

Spring Boot H2サンプル

Spring Bootを設定しましょう。

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

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

ステップ2: 提供 Group名前。以下を提供しました com.w3codebox。

ステップ3: 提供 Artifact ID。以下を提供しました spring-boot-h2-database-example。

ステップ5: 依存関係を追加 Spring Web、Spring Data JPA 、および H2データベース。

ステップ6: をクリックして、 Generate (生成)ボタンをクリックすると、プロジェクトが以下にパッケージされます: Jar ファイル内で、それをローカルシステムにダウンロードします。

ステップ7: 展開 JarファイルをコピーしてSTSワークスペースに貼り付けます。

第8ステップ: インポートプロジェクトフォルダをSTSにインポート。

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

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

ステップ9: フォルダーに/src/javaフォルダ内の名前 com.w3codebox.model

ステップ10: パッケージ com.w3codebox.model内のクラス。 名前の Studentのクラス。 「本」クラスで以下の操作を行いました:

四つの変数の定義 id, age, nameおよび GetterとSetterの生成。
ファイルを右クリックします-> ソース-> GettersとSettersを生成します。
アノテーションを使用 @Entityとしてマークします Entity アノテーションを使用 @Tableこのクラスを Table 名前を指定します。 アノテーションを使用して @Column 各変数を定義します Column

Student.java

package com.w3codebox.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
//クラスをエンティティとしてマークします
@Entity
//クラス名をテーブル名として定義します
@Table
public class Student 
{
    //idを主キーとしてマークします
    @Id
    //idを列名として定義します
    @Column
    private int id;
    //nameを列名として定義します
    @Column
    private String name;
    //ageを列名として定義します
    @Column
    private int age;
    //emailを列名として定義します
    @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: studentRepository.deleteById(id); フォルダーに/src/main com.w3codebox.controller codebox.repository  

ステップ12: のパッケージ   com.w3codebox.controller クラス内にControllerクラスを作成しました。以下の名前で作成しました:   StudentController のコントローラークラスとしてマークします。StudentControllerクラスでは、以下の操作を行いました:アノテーションを使用 @RestControllerを使用してクラスを RestController アノテーションを使用 @Autowired 自動アノテーション StudentService クラス。 以下方法を定義します: getAllStudent(): これはすべての学生のリストを返します。 getStudent(): これはパス変数で指定した学生の詳細情報を返します。注解@PathVariableを使用して、idをパラメータとして渡しています。注解は、メソッドパラメータがURIテンプレート変数にバインドされることを示します。 deleteStudent(): これはパス変数で指定した特定の学生を削除します。 saveStudent(): これは学生の詳細情報を保存します。注解@RequestBodyは、メソッドパラメータをWebリクエストの本文にバインドする必要があることを示します。

StudentController.java

package com.w3codebox.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.w3codebox.model.Student;
import com.w3codebox.service.StudentService;
//RestControllerの作成中
@RestController
public class StudentController 
{
    //StudentServiceクラスの自動装配
    @Autowired
    StudentService studentService;
    //データベースからすべての学生の詳細情報を検索するgetマッピングの作成
    @GetMapping("/student")
    private List<Student> getAllStudent() 
    {
        return studentService.getAllStudent();
    }
    //特定学生详细信息的检索getマッピングの作成
    @GetMapping("/student/{id}")
    private Student getStudent(@PathVariable("id") int id) 
    {
        return studentService.getStudentById(id);
    }
    //特定の学生を削除するマッピングを创建
    @DeleteMapping("/student/{id}")
    private void deleteStudent(@PathVariable("id") int id) 
    {
        studentService.delete(id);
    }
    //データベースに学生詳細情報を公開するPOSTマッピングを创建
    @PostMapping("/student")
    private int saveStudent(@RequestBody Student student) 
    {
    studentService.saveOrUpdate(student);
    return student.getId();
    }
}

ステップ13: studentRepository.deleteById(id);   フォルダーに/src/java中に名前が com.w3codebox.service codebox.repository

ステップ14: パッケージを作成します。   Service パッケージ   com.w3codebox.service。

StudentService.java に名前が   StudentService のサービスクラス。

package com.w3codebox.service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.w3codebox.model.Student;
import com.w3codebox.repository.StudentRepository;
@Service
public class StudentService 
{
    @Autowired
    StudentRepository studentRepository;
    //すべての学生記録を取得
    public List<Student> getAllStudent() 
    {
    List<Student> students = new ArrayList<Student>();
    studentRepository.findAll().forEach(student -> students.add(student));
    return students;
    }
    //特定の記録を取得
    public Student getStudentById(int id) 
    {
    public Student getStudentById(int id)
    }
    return studentRepository.findById(id).get(); 
    {
    public void saveOrUpdate(Student student)
    }
    //studentRepository.save(student);
    特定のレコードを削除します。 
    {
    public void delete(int id)
    }
}

ステップ15: studentRepository.deleteById(id);   フォルダーに/src/main com.w3javaに、 codebox.repository

ステップ16: パッケージを作成します。  リポジトリインターフェースが作成されました。   com.w3codebox.repositoryに、 StudentRepository のストレージインターフェースを拡張しています。 これは、   Crud Repository インターフェース。

StudentRepository.java

package com.w3codebox.repository;
import org.springframework.data.repository.CrudRepository;
import com.w3codebox.model.Student;
public interface StudentRepository extends CrudRepository<Student, Integer>
{
}
 

今から、以下の   application.properties ファイルでデータソースを設定   URL、ドライバークラス名、ユーザー名および  パスワード

ステップ17: を開きます   application.properties ファイルを開き、以下の属性を設定してください。

application.properties

spring.datasource.url=jdbc:h2:mem:w3codebox
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
#Hを有効にする2
consolespring.h2.console.enabled=true
注意: Hを有効にすることを忘れないでください。2コンソール。

すべてのクラスとパッケージが作成された後、プロジェクトのディレクトリ構造は以下のようになります。

今、このアプリケーションを実行します。

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

SpringBootH2DatabaseExampleApplication.java

package com.w3codebox;
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送信   POST および   GET リクエスト  Postmanがシステムにインストールされていない場合、以下の手順を実行してください:

から https://www.getpostman.com/downloads/またはブラウザ https://bit.ly/1HCOCwF にGoogle Chromeエクステンションを追加します。 Postmanを起動し、登録。ユーザー名を作成します。以下の名前で作成しました w3codebox のユーザーが、以下をクリックしました Submit

ステップ19: を開きます  Postman以下の操作を実行します:

選択 POST URL http: //localhost: 8080/student。 選択Body コンテンツタイプを選択 JSON(application/json)。 データを挿入します。以下のデータを挿入しました:
{
    "id": "00"1",
    "age": ""23",
    "name": "Amit",
    "email": "[email protected]"
}
クリック送信

リクエストが成功実行された後、以下を表示します  ステータス: 200 OK 。これは、データベースに記録が成功して挿入されたことを意味します。

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

{"id": "002","age": "24","name": "Vadik","email": "[email protected]"
} 
{
    "id": "00"3",
    "age": ""21",
    "name": "Prateek",
    "email": "[email protected]"
} 
{
    "id": "00"4",
    "age": ""25",
    "name": "Harsh"
    "email": "[email protected]"
} 
{
    "id": "00"5",
    "age": ""24",
    "name": "Swarit",
    "email": "[email protected]"
}

Hを訪問するために、2コンソールでデータを確認してください。

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

をクリックして、  コネクションボタンをクリックした後、データベースには以下が表示されます  Studentテーブルを以下のように表示します。

ステップ21: をクリックして、  Studentテーブルをクリックして、  実行ボタン。このテーブルは、本文に挿入したデータを表示しています。

ステップ22: Postmanを開いて送信   GET リクエスト。それはデータベースに挿入したデータを返します。

URL http: を使用してリクエストを行ってください //localhost: 8080/student/{id}を送信   GET リクエスト。私たちはURL http: を呼び出しました//localhost:8080/student/3。それはIDが3の学生の詳細情報。

同様に、以下のリクエストを送信することもできます   Delete リクエスト。私たちはIDが2の学生レコード。

学生レコードを削除するには、URL http: で送信するリクエストを送信してください//localhost:8080/student/の   DELETE リクエスト。私たちはIDが   2 の学生はデータベースから削除されました。