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

SpringBoot Data JPA

Spring Data是一个高级Spring Source项目。其目的是统一并轻松访问关系数据库系统和NoSQL数据存储等不同类型的持久性存储。

在实现新应用程序时,我们应该专注于业务逻辑而不是技术复杂性和样板代码。这就是Java持久性API(JPA)规范和Spring Data JPA非常受欢迎的原因。

Spring Data JPA在JPA的顶部增加了一层。这意味着,Spring Data JPA使用JPA规范定义的所有功能,尤其是实体,关联映射和JPA的查询功能。 Spring Data JPA添加了自己的功能,例如存储库模式的无代码实现以及从方法名称创建数据库查询。

Spring Data JPA

Spring Data JPA处理大多数基于JDBC的数据库访问和ORM(对象关系映射)的复杂性。它减少了JPA所需的样板代码。

Spring Data JPA旨在通过减少所需的工作量来改进数据访问层的实现。

Spring Data JPA功能

Spring Data JPA有 tre主要功能,如下所示:

无代码存储库: 这是最流行的与持久性相关的模式。它使我们能够在更高的抽象级别上实现业务代码。 简化的样板代码: 它通过其存储库接口为每种方法提供默认实现。这意味着不再需要实现读写操作。 生成的查询: Spring Data JPA的另一个功能是根据方法名称生成数据库查询。如果查询不太复杂,则需要在存储库接口上定义一个以 findBy 开头的名称的方法。定义方法后,Spring解析方法名称并为其创建查询。例如:

public interface EmployeeRepository extends CrudRepository<Employee, Long> 
{
Employee findByName(String name);
}

在上面的示例中,我们扩展了使用两个泛型的 CrudRepository : Employee e Long 。Employee是要管理的 实体,而 Long 是主键的数据类型

Spring内部会生成 JPQL (Java持久性查询语言)基于方法名称的查询。该查询是从方法签名派生的。它设置绑定参数值,执行查询并返回结果。

Ci sono altre funzionalità, come ad esempio:

Può integrare codice di repository personalizzato. Questo è un repository potente e un'astrazione di mappatura oggetto personalizzata. Supporta la revisione trasparente. Implementa classi di base dominio per fornire attributi di base. Supporta più moduli, come Spring Data JPA, Spring Data MongoDB, Spring Data REST, Spring Data Cassandra e altri.

repository di dati Spring

Spring Data JPA offre trerepository, come ad esempio:

CrudRepository: : Fornisce standardcreazione, lettura, aggiornamentoecancellazione. Contiene funzionalità come findOne(), findAll(), save(), delete(),e altri. PagingAndSortingRepository : Esegue l'estensione di CrudRepository e aggiunge il metodo findAll. Ci permette di ricercare in modo paginato.ordinamentoeRicercadati. JpaRepository : Questo è repository specifici per JPA, che si trova in Spring Data Jpa definito. Esegue l'estensione dei repository CrudRepository e PagingAndSortingRepository. Aggiunge metodi specifici per JPA, come flush(), per attivare il refresh nel contesto della persistenza.

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>

SpringBoot Starter Data JPA

Spring Boot offre spring-boot-starter-data-jpa Relazione di dipendenza per connettere efficacemente un'applicazione Spring con un database relazionale. spring-boot-starter-data-jpa utilizza internamente la dipendenza spring-boot-jpa (a partire dalla versione 1.5.3 di Spring Boot).

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>

Il database è progettato con tabelle/relazioni. I metodi precedenti (JDBC) implicavano scrivere query SQL. In JPA, memorizzeremo i dati degli oggetti nelle tabelle e viceversa. Tuttavia, JPA è evoluta a causa di un processo di pensiero diverso.

Prima di JPA, ORM era il termine più utilizzato per questi framework. Questo è il motivo per cui Hibernate è chiamato framework ORM.

JPA ci permette di mappare le classi dell'applicazione ai tabella del database.

Gestore delle entità: : Dopo aver definito la mappatura, gestisce tutte le interazioni con il database. JPQL (Java Persistence Query Language): Fornisce un metodo per scrivere query per eseguire ricerche sulle entità. È diverso dalle query SQL. Le query JPQL già conoscono la mappatura definita tra le entità. Possiamo aggiungere altre condizioni se necessario. API standard : Definisce un'API basata su Java per eseguire ricerche sul database.

Hibernate e JPA

Hibernate è l'implementazione di JPA. È il framework ORM più popolare, mentre JPA è l'API che definisce lo standard. Hibernate conosce la mappatura che aggiungiamo tra gli oggetti e le tabelle. Assicura che i dati vengano recuperati / memorizzati nel database basandosi sulla mappatura. Fornisce anche altre funzionalità in cima a JPA.

Esempio di Spring Boot JPA

In questo esempio, utilizzeremo la dipendenza spring-boot-starter-data- jpa per creare una connessione con il database H2.

Passo 1: Apri spring Initializr https://start.spring.io/

Passo 2: Fornisce GruppoNome. Abbiamo fornito com.w3codebox

Passo 3: Fornisce Artifattario ID. Abbiamo fornito spring-boot-jpa-example.

Passo 4: Aggiungi dipendenze: Spring Web, Spring Data JPA,e Database H2.

Passo 5: 单击 GeneraPulsante. Quando clicchiamo sul pulsante "Genera", esso impacchetta il progetto in Jar Il file e scaricalo sul sistema locale.

Passo 6: Estrai File Jar e incollalo nella workspace di STS.

Passo 7: TrascinaImporta la cartella del progetto in STS.

File->Importa->Progetto Maven esistente->Esplora->Seleziona la cartella spring-boot-jpa-example->Completa

L'importazione richiede un po' di tempo.

Passo 8: Creare un file chiamato com.w3codebox.controller il pacchetto nel passaggio}} src/main/java all'interno di

Passaggio 9: Creare una nome in console ControllerDemo è una classe Controller. Pacchetto 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";
}
}

Passaggio 10: nella cartella creare un altro pacchetto chiamato com.w3codebox.model pacchetto.  

Passaggio 11: è stato creato in pacchetto com.w3codebox.model con il nome   User è una classe.

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 "Utente [id=" + id + ", uname=" + username + "]";
}
}
 

Ora, dobbiamo configurare il database H2.

步骤12: apri   application.properties file e configura il seguente contenuto:  porta, abilita la console H2, il data source,e   URL.

application.properties

server.port=8085
spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:w3codebox
 

步骤13: : Nella cartella   crea un file in src/main/resources SQL 文件。

clicca con il tasto destro sulla cartella src/main/resources-> nuova-> file-> fornisce  文件名-> completato

我们提供了文件名   data.sql ,并将以下数据插入其中。

data.sql

insert into userdata values(101,'Tom');
insert into userdata values(102,'Andrew');
insert into userdata values(103,'Tony');
insert into userdata values(104,'Bob');
insert into userdata values(105,'Sam');
 

步骤14: : 在   src 文件夹中创建一个名称为   webapp 的文件夹。

步骤15: 使用我们在   ControllerDemo 在中返回的名称创建一个JSP文件。在ControllerDemo.java中,我们返回了   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>Inserisci un titolo qui</title>
</head>
<body>
<form action="addUser">
ID :<br/>
<input type="text" name="t1"><br/>
User name :<br/>
<input type="text" name="t2"><br/>
<input type="submit" value="Add">
</form>
</body>
</html>
 

步骤16: 运行   SpringBootJpaExampleApplication.java 文件。我们可以在控制台中看到我们的应用程序已在端口   8085 上成功运行。

步骤17: 打开浏览器并调用URL http://localhost: 8085/h2-console/。它显示了驱动程序类,我们在   application.properties 文件中配置的JDBC URL和默认的用户名sa。

我们还可以通过单击   Test Connection 按钮来测试连接。如果连接成功,则显示消息"测试成功"。

步骤18: 单击   Connect (连接)按钮。它显示了我们在   User.java 中定义的表userdata的结构。

步骤19: 执行以下查询以查看我们已插入   data.sql 文件中的数据。

SELECT * FROM USERDATA;