📅  最后修改于: 2021-01-11 05:06:13             🧑  作者: Mango
Spring Data是一个高级Spring Source项目。其目的是统一并轻松访问关系数据库系统和NoSQL数据存储等各种持久性存储。
当我们实现一个新的应用程序时,我们应该专注于业务逻辑,而不是技术复杂性和样板代码。这就是为什么Java Persistent 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的三个主要功能如下:
public interface EmployeeRepository extends CrudRepository
{
Employee findByName(String name);
}
在上面的示例中,我们扩展了使用两个泛型的CrudRepository :Employee和Long 。 Employee是要管理的实体,Long是主键的数据类型
Spring在内部基于方法名称生成JPQL (Java持久性查询语言)查询。该查询是从方法签名派生的。它设置绑定参数值,执行查询并返回结果。
其他一些功能如下:
Spring Data JPA提供了三个存储库,如下所示:
org.springframework.data
spring-data-jpa
2.2.3.RELEASE
Spring Boot提供spring-boot-starter-data-jpa依赖关系,以有效地将Spring应用程序与关系数据库连接。 spring-boot-starter-data-jpa在内部使用spring-boot-jpa依赖项(自Spring Boot版本1.5.3起)。
org.springframework.boot
spring-boot-starter-data-jpa
2.2.2.RELEASE
数据库是用表/关系设计的。较早的方法(JDBC)涉及编写SQL查询。在JPA中,我们会将对象中的数据存储到表中,反之亦然。但是,JPA是通过不同的思维过程演变而来的。
在JPA之前,ORM是更常用于指代这些框架的术语。这就是Hibernate被称为ORM框架的原因。
JPA允许我们将应用程序类映射到数据库中的表。
Hibernate是JPA的实现。它是最流行的ORM框架,而JPA是定义规范的API。 Hibernate了解我们在对象和表之间添加的映射。它确保基于映射从数据库检索/存储数据。它还在JPA顶部提供了其他功能。
在此示例中,我们将使用spring-boot-starter-data-jpa依赖关系来创建与H2数据库的连接。
步骤1:打开spring Initializr https://start.spring.io/ 。
步骤2:提供群组名称。我们提供了com.javatpoint 。
第3步:提供工件ID。我们提供了spring-boot-jpa-example。
步骤4:添加依赖项: Spring Web,Spring Data JPA和H2数据库。
步骤5:点击Generate(生成)按钮。当我们单击Generate按钮时,它将项目包装在Jar文件中,并将其下载到本地系统。
步骤6:解压缩Jar文件并将其粘贴到STS工作区中。
步骤7:将项目文件夹导入STS。
文件->导入->现有Maven项目->浏览->选择文件夹spring-boot-jpa-example->完成
导入需要一些时间。
步骤8:在文件夹src / main / java中创建一个名称为com.javatpoint.controller的包。
步骤9:在包com.javatpoint.controller中创建一个名称为ControllerDemo的Controller类。
ControllerDemo.java
package com.javatpoint.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.javatpoint.model的包。
步骤11:在com.javatpoint.model包中创建一个名为User的类。
User.java
package com.javatpoint.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:打开application.properties文件并配置以下内容:端口,启用H2控制台,数据源和URL。
application.properties
server.port=8085
spring.h2.console.enabled=true
spring.datasource.plateform=h2
spring.datasource.url=jdbc:h2:mem:javatpoint
步骤13:在文件夹src / main / resources中创建一个SQL文件。
右键单击文件夹src / main / resources->新建-> File->提供文件名-> Finish
我们提供了文件名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"%>
Insert title here
步骤16:运行SpringBootJpaExampleApplication.java文件。我们可以在控制台中看到我们的应用程序已在端口8085上成功运行。
步骤17:打开浏览器并调用URL http:// localhost:8085 / h2-console /。它显示了驱动程序类,我们在application.properties文件中配置的JDBC URL和默认的用户名sa。
我们也可以通过单击“测试连接”按钮来测试连接。如果连接成功,则显示消息“测试成功”。
步骤18:点击Connect(连接)按钮。它显示了我们在User.java中定义的表userdata的结构。
步骤19:执行以下查询以查看我们已插入到data.sql文件中的数据。
SELECT * FROM USERDATA;