English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring Dataは、高度なSpring Sourceプロジェクトです。その目的は、関係データベースシステムやNoSQLデータストレージなどの異なる種類の持続可能なストレージに統一して簡単にアクセスすることです。
新しいアプリケーションを実装する際には、技術的な複雑さやサンプルコードではなく、ビジネスロジックに集中すべきです。これがJava Persistence API(JPA)規範とSpring Data JPAが非常に人気のある理由です。
Spring Data JPAはJPAの上にレイヤーを追加しています。これは、Spring Data JPAがJPA規範で定義されているすべての機能を使用していることを意味しており、特にエンティティ、関連マッピング、およびJPAのクエリ機能です。Spring Data JPAは、リポジトリパターンの無コード実装やメソッド名からデータベースクエリを作成するなどの独自機能も追加しています。
Spring Data JPAは、JDBCに基づくデータベースアクセスとORM(オブジェクト関係マッピング)の複雑さを処理します。それはJPAが必要とするサンプルコードを減少させます。
Spring Data JPAは、データアクセスレイヤーの実装を改善するために、必要な作業量を減らすことを目的としています。
Spring Data JPAには 三つの主な機能、以下のように:
コードレスストレージレポジトリ: これは最も人気のある持久性に関連するパターンです。それはビジネスコードをより高い抽象レベルで実現できるようにします。 簡素化されたサンプルコード: それは各メソッドに対してデフォルトの実装を提供するストレージインターフェースを通じて各メソッドに対してデフォルトの実装を提供します。これは、読み書き操作を実装する必要がなくなります。 生成されたクエリ: Spring Data JPAの別の機能は、メソッド名に基づいて生成されたクエリですデータベースクエリの生成。クエリが比較的単純であれば、ストレージインターフェース上に名前で始まるクエリを定義する必要があります。 findBy の名前で始まるメソッドを定義します。メソッドを定義した後、Springはメソッド名を解析し、クエリを作成します。例えば:
public interface EmployeeRepository extends CrudRepository<Employee, Long> { Employee findByName(String name); }
上記の例では、二つのジェネリクスを使用して拡張しました CrudRepository : Employee および Long 。Employeeは管理する必要があります エンティティ、そして Long が主キーのデータタイプです
Spring内部で生成 JPQL (Java持久性クエリ言語)メソッド名に基づくクエリ。このクエリはメソッドシグネチャから派生されます。バインドパラメータの値を設定し、クエリを実行し、結果を返します。
以下のような他の機能もあります:
それはカスタムストレージコードを統合できます。 これは強力なストレージレポジトリとカスタムオブジェクトマッピング抽象です。 それは透明な監査をサポートしています。 それは基本的な属性を提供するドメインベースのクラスを実現しました。 それは複数のモジュールをサポートしています、例えばSpring Data JPA、Spring Data MongoDB、Spring Data REST、Spring Data Cassandraなどです。
Spring Data JPAは提供しました 三つのストレージレポジトリ、以下のように:
CrudRepository: : それが標準の作成、読取、更新および削除。それには、 findOne()、findAll()、save()、delete()、などです。 PagingAndSortingRepository : それが拡張しました CrudRepository し、findAllメソッドを追加しました。ページング方式で並び替えおよび取得データを取得します。 JpaRepository : これは JPA特別リポジトリ、それは Spring Data Jpa 中で定義。それはリポジトリCrudRepositoryとPagingAndSortingRepositoryを拡張しており、特定のJPAメソッド、例えば flush()、データベースの永続化コンテキスト上でリフレッシュをトリガーします。
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>2.2.3.RELEASE</version> form>/dependency>
Spring Bootは提供しています spring-boot-starter-data-jpa 依存関係を利用して、Springアプリケーションと関係データベースを効果的に接続します。-boot-starter-data-jpaは内部でspringを使用-boot-jpa依存関係(Spring Bootバージョン1.5.3起)。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.2.2.RELEASE</version> form>/dependency>
データベースはテーブルで/関係設計の。もっと以前の方法(JDBC)はSQLクエリの書き込みに関与していました。JPAでは、オブジェクトの中のデータをテーブルに保存し、逆も同様ですが、JPAは異なる思考プロセスを経て進化しました。
JPA以前には、ORMはこれらのフレームワークを指すためによく使われていました。これがHibernateがORMフレームワークと呼ばれる理由です。
JPAでは、アプリケーションクラスをデータベースのテーブルにマッピングすることができます。
エンティティ管理者: : マッピングを定義した後、データベースとの全てのインタラクションを処理します。 JPQL(Java Persistence Query Language): エンティティに対してクエリを実行するためのクエリの書き方を提供します。SQLクエリとは異なります。JPQLクエリはエンティティ間で定義されたマッピングを理解しており、必要に応じて他の条件を追加できます。 標準API : それにより、データベースに対してJavaを基にしたAPIを定義します。
HibernateはJPAの実装です。それは最も人気のあるORMフレームワークであり、JPAは規格定義APIです。Hibernateは、オブジェクトとテーブル間に追加したマッピングを理解しています。マッピングに基づいてデータベースから検索を行うことを保証します。/データを保存します。また、JPAのトップで他の機能も提供しています。
この例では、springを使用する-boot-starter-data- jpa依存関係を使用してH2データベースの接続。
ステップ1: spring Initializrを開きます https://start.spring.io/。
ステップ2: 提供しています。 グループ名前。私たちは com.w3codebox 。
ステップ3: 提供しています。 アーティファクト ID。私たちは spring-boot-jpa-example。
ステップ4: 依存関係を追加します: Spring Web、Spring Data JPA、および H2データベース。
ステップ5: ボタンをクリックしてテスト接続を行います。接続が成功した場合、メッセージ「テスト成功」が表示されます。 生成ボタン。"生成"ボタンをクリックすると、プロジェクトが Jar ファイルから抽出し、ローカルシステムにダウンロードします。
ステップ6: JarファイルをSTSワークスペースに貼り付けます。
ステップ7:プロジェクトフォルダーにSTSをインポートします。
ファイル->インポート->既存のMavenプロジェクト->ブラウズ->springのフォルダーを選択-boot-jpa-example->完了
インポートには少し時間がかかります。
ステップ8: を名前を com.w3codebox.controller で作成します。 src/main/のプログラムパッケージをステップ のフォルダー
ステップ9: コンソールに名前が ControllerDemo のControllerクラス。パッケージ com.w3codebox.controller 。
ControllerDemo.java
package com.w3codebox.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ControllerDemo { @RequestMapping("/") public String home() { return "home.jsp"; } }
ステップ10: のフォルダー src/main/javaで別の名前が com.w3codebox.model のパッケージ。
User。 Java
package com.w3codebox.model; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="userdata") public class User { @Id private int id; private String username; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUname() { return username; } public void setUname(String username) { this.username = username; } @Override public String toString() { return "User [id=" + id + ", uname=" + username + "]"; } }
今、H2データベース。
ステップ12: 開く console ファイルを開き以下の内容を設定します: ポート、H2コンソール、データソース、および URL。
console
server.port=8085 spring.h2.console.enabled=true spring.datasource.platform=h2 spring.datasource.url=jdbc:h2:mem:w3codebox
ステップ13: : フォルダー src/main/resourcesフォルダーの中で SQL ファイル。
srcフォルダーを右クリックして/main/resources->新規作成->ファイル->提供 ファイル名->完了
ファイル名を提供しました。 data.sql 、以下データを挿入します。
data.sql
insert into userdata values(101Tom'); insert into userdata values(102Andrew'); insert into userdata values(103Tony'); insert into userdata values(104Bob'); insert into userdata values(105Sam');
ステップ14: : 在 src フォルダーの中で webapp のフォルダー。
ステップ15: を使用して ControllerDemo 中返回的名称创建一个JSPファイル。 home.jsp 。
home.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> !DOCTYPE html <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> form>/head>
ステップ16: < html> を実行 8085 SpringBootJpaExampleApplication.java
ステップ17: ファイル。私たちはコントロールパネルで //で成功して実行されていることを確認できます。 8085/ブラウザを開いてURL http:2-localhost:/h console を確認します。それは、私たちが
application.properties ファイルで設定されたJDBC URLとデフォルトのユーザー名saをクリックして テスト接続
ステップ18: ボタンをクリックしてテスト接続を行います。接続が成功した場合、メッセージ「テスト成功」が表示されます。 Connect (接続)ボタン。それは私たちが User.java で定義されたuserdataテーブルの構造を確認します。
ステップ19: 以下のクエリを実行して、私たちが挿入した data.sql ファイル内のデータ。
SELECT * FROM USERDATA;