SpringBoot Data JPA

Spring Data是一個(gè)高級(jí)Spring Source項(xiàng)目。其目的是統(tǒng)一并輕松訪問關(guān)系數(shù)據(jù)庫系統(tǒng)和NoSQL數(shù)據(jù)存儲(chǔ)等不同類型的持久性存儲(chǔ)。

在實(shí)現(xiàn)新應(yīng)用程序時(shí),我們應(yīng)該專注于業(yè)務(wù)邏輯而不是技術(shù)復(fù)雜性和樣板代碼。這就是Java持久性API(JPA)規(guī)范和Spring Data JPA非常受歡迎的原因。

Spring Data JPA在JPA的頂部增加了一層。這意味著,Spring Data JPA使用JPA規(guī)范定義的所有功能,尤其是實(shí)體,關(guān)聯(lián)映射和JPA的查詢功能。 Spring Data JPA添加了自己的功能,例如存儲(chǔ)庫模式的無代碼實(shí)現(xiàn)以及從方法名稱創(chuàng)建數(shù)據(jù)庫查詢。

Spring Data JPA

Spring Data JPA處理大多數(shù)基于JDBC的數(shù)據(jù)庫訪問和ORM(對(duì)象關(guān)系映射)的復(fù)雜性。它減少了JPA所需的樣板代碼。

Spring Data JPA旨在通過減少所需的工作量來改進(jìn)數(shù)據(jù)訪問層的實(shí)現(xiàn)。

Spring Data JPA功能

Spring Data JPA有 三個(gè)主要功能,如下所示:

無代碼存儲(chǔ)庫: 這是最流行的與持久性相關(guān)的模式。它使我們能夠在更高的抽象級(jí)別上實(shí)現(xiàn)業(yè)務(wù)代碼。 簡(jiǎn)化的樣板代碼: 它通過其存儲(chǔ)庫接口為每種方法提供默認(rèn)實(shí)現(xiàn)。這意味著不再需要實(shí)現(xiàn)讀寫操作。 生成的查詢: Spring Data JPA的另一個(gè)功能是根據(jù)方法名稱生成數(shù)據(jù)庫查詢。如果查詢不太復(fù)雜,則需要在存儲(chǔ)庫接口上定義一個(gè)以 findBy 開頭的名稱的方法。定義方法后,Spring解析方法名稱并為其創(chuàng)建查詢。例如:

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

在上面的示例中,我們擴(kuò)展了使用兩個(gè)泛型的 CrudRepository : Employee Long 。 Employee是要管理的 實(shí)體,而 Long 是主鍵的數(shù)據(jù)類型

Spring內(nèi)部會(huì)生成 JPQL (Java持久性查詢語言)基于方法名稱的查詢。該查詢是從方法簽名派生的。它設(shè)置綁定參數(shù)值,執(zhí)行查詢并返回結(jié)果。

還有其他一些功能,如下所示:

它可以集成自定義存儲(chǔ)庫代碼。 這是一個(gè)功能強(qiáng)大的存儲(chǔ)庫和自定義對(duì)象映射抽象。 它支持透明審核。 它實(shí)現(xiàn)了提供基本屬性的域基類。 它支持多個(gè)模塊,例如Spring Data JPA,Spring Data MongoDB,Spring Data REST,Spring Data Cassandra等。

Spring數(shù)據(jù)存儲(chǔ)庫

Spring Data JPA提供了 三個(gè)存儲(chǔ)庫,如下所示:

CrudRepository: : 它提供標(biāo)準(zhǔn)的創(chuàng)建,讀取,更新刪除。它包含諸如 findOne(),findAll( ),save(),delete(),等。 PagingAndSortingRepository : 它擴(kuò)展了 CrudRepository 并添加了findAll方法。它使我們能夠以分頁方式排序檢索數(shù)據(jù)。 JpaRepository : 這是一個(gè) JPA特定存儲(chǔ)庫,它在 Spring Data Jpa 中定義。它擴(kuò)展了存儲(chǔ)庫CrudRepository和PagingAndSortingRepository。它添加了特定于JPA的方法,例如 flush(),以在持久性上下文上觸發(fā)刷新。

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

SpringBoot Starter Data JPA

Spring Boot提供了 spring-boot-starter-data-jpa 依賴關(guān)系,以有效地將Spring應(yīng)用程序與關(guān)系數(shù)據(jù)庫連接。 spring-boot-starter-data-jpa在內(nèi)部使用spring-boot-jpa依賴項(xiàng)(自Spring Boot版本1.5.3起)。

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

數(shù)據(jù)庫是用表/關(guān)系設(shè)計(jì)的。較早的方法(JDBC)涉及編寫SQL查詢。在JPA中,我們會(huì)將對(duì)象中的數(shù)據(jù)存儲(chǔ)到表中,反之亦然。但是,JPA是由于不同的思維過程而演變的。

在JPA之前,ORM是更常用于指代這些框架的術(shù)語。這就是Hibernate被稱為ORM框架的原因。

JPA允許我們將應(yīng)用程序類映射到數(shù)據(jù)庫中的表。

實(shí)體管理器: : 定義映射后,它將處理與數(shù)據(jù)庫的所有交互。 JPQL(Java持久性查詢語言): 它提供了一種編寫查詢以對(duì)實(shí)體執(zhí)行搜索的方法。它不同于SQL查詢。 JPQL查詢已經(jīng)了解實(shí)體之間定義的映射。如果需要,我們可以添加其他條件。 標(biāo)準(zhǔn)API : 它定義了一個(gè)基于Java的API以對(duì)數(shù)據(jù)庫執(zhí)行搜索。

Hibernate與JPA

Hibernate是JPA的實(shí)現(xiàn)。它是最流行的ORM框架,而JPA是定義規(guī)范的API。 Hibernate了解我們?cè)趯?duì)象和表之間添加的映射。它確?;谟成鋸臄?shù)據(jù)庫檢索/存儲(chǔ)數(shù)據(jù)。它還在JPA頂部提供了其他功能。

Spring Boot JPA示例

在此示例中,我們將使用spring-boot-starter-data- jpa依賴關(guān)系來創(chuàng)建與H2數(shù)據(jù)庫的連接。

步驟1: 打開spring Initializr https://start.spring.io/。

步驟2: 提供 名稱。我們提供了 com.nhooo

步驟3: 提供 工件 ID。我們提供了 spring-boot-jpa-example。

步驟4: 添加依賴項(xiàng): Spring Web,Spring Data JPA, H2數(shù)據(jù)庫。

步驟5: 單擊 生成按鈕。當(dāng)我們單擊"生成"按鈕時(shí),它會(huì)將項(xiàng)目包裝在 Jar 文件中,并將其下載到本地系統(tǒng)。

Spring Boot Starter Data JPA

步驟6: 提取 Jar文件并將其粘貼到STS工作區(qū)中。

步驟7: 將項(xiàng)目文件夾導(dǎo)入STS。

文件->導(dǎo)入->現(xiàn)有Maven項(xiàng)目->瀏覽->選擇文件夾spring-boot-jpa-example->完成

導(dǎo)入需要一些時(shí)間。

步驟8: 創(chuàng)建一個(gè)名為 com.nhooo.controller 的程序包在步驟 src/main/java 中。

步驟9: 在控制臺(tái)中創(chuàng)建一個(gè)名稱為 ControllerDemo 的Controller類。軟件包 com.nhooo.controller

ControllerDemo.java

package com.nhooo.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中創(chuàng)建另一個(gè)名為 com.nhooo.model 的軟件包。  

步驟11: 在包c(diǎn)om.nhooo.model中創(chuàng)建一個(gè)名稱為   User 的類。

User。 Java

package com.nhooo.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 + "]";
}
}
 

現(xiàn)在,我們需要配置H2數(shù)據(jù)庫。

步驟12: 打開   application.properties 文件并配置以下內(nèi)容:  端口,啟用H2控制臺(tái),數(shù)據(jù)源,和   URL。

application.properties

server.port=8085
spring.h2.console.enabled=true
spring.datasource.plateform=h2
spring.datasource.url=jdbc:h2:mem:nhooo
 

步驟13: : 在文件夾   src/main/resources中創(chuàng)建一個(gè) SQL 文件。

右鍵單擊文件夾src/main/resources->新建->文件->提供  文件名->完成

我們提供了文件名   data.sql ,并將以下數(shù)據(jù)插入其中。

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 文件夾中創(chuàng)建一個(gè)名稱為   webapp 的文件夾。

步驟15: 使用我們?cè)?  ControllerDemo 中返回的名稱創(chuàng)建一個(gè)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>Insert title here</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: 運(yùn)行   SpringBootJpaExampleApplication.java 文件。我們可以在控制臺(tái)中看到我們的應(yīng)用程序已在端口   8085 上成功運(yùn)行。

Spring Boot Starter Data JPA

步驟17: 打開瀏覽器并調(diào)用URL http: //localhost: 8085/h2-console/。它顯示了驅(qū)動(dòng)程序類,我們?cè)?  application.properties 文件中配置的JDBC URL和默認(rèn)的用戶名sa。

圖片.png

我們還可以通過單擊   Test Connection 按鈕來測(cè)試連接。如果連接成功,則顯示消息"測(cè)試成功"。

步驟18: 單擊   Connect (連接)按鈕。它顯示了我們?cè)?  User.java 中定義的表userdata的結(jié)構(gòu)。

圖片.png

步驟19: 執(zhí)行以下查詢以查看我們已插入   data.sql 文件中的數(shù)據(jù)。

SELECT * FROM USERDATA;
 
Spring Boot入門數(shù)據(jù)JPA
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清