Spring Data JPA
标签: 后端
upupor   118   0 2020-09-18 14:06 
最新一次编辑的原因:
添加一些参考链接

Spring Data是高级Spring Source项目。 其目的是统一访问访问关系数据库系统和NoSQL数据存储等各种持久性存储。

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

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

 

1.Spring Data JPA

Spring Data JPA处理大多数基于JDBC的数据库访问和ORM(对象关系映射)的复杂性。它减少了JPA所需的样板代码。它使持久层代码的实现更加轻松快捷。

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

2.Spring Data JPA功能

Spring Data JPA的三个主要功能如下:

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

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

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

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

其他一些功能如下:

  • 它可以集成自定义存储库代码。
  • 它是一个功能强大的存储库和自定义对象映射抽象。
  • 它支持透明审核。
  • 它实现了提供基本属性的域基类。
  • 它支持多个模块,例如:Spring Data JPASpring Data MongoDBSpring Data RESTSpring Data Cassandra等。

3.Spring数据存储库

Spring Data JPA提供了三个存储库,如下所示:

CrudRepository:提供标准的创建,读取,更新和删除功能,其中包含诸如findOne()findAll()save()delete()等方法。
PagingAndSortingRepository:它扩展了CrudRepository并添加了findAll方法。它能够以分页方式对数据进行排序和检索。
JpaRepository:这是一个JPA特定的存储库,它在Spring Data Jpa中定义。 它扩展了存储库CrudRepositoryPagingAndSortingRepository。 它添加了特定于JPA的方法,例如flush(),以在持久性上下文上触发刷新。

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

4.Spring Boot Starter数据JPA

Spring Boot提供spring-boot-starter-data-jpa依赖关系,以有效地将Spring应用程序与关系数据库连接。 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>  
</dependency>

数据库是用表/关系设计的。 较早的方法(JDBC)涉及编写SQL查询。 在JPA中,我们会将对象中的数据存储到表中,反之亦然。 但是,JPA是通过不同的思维过程演变而来的。

在JPA之前,ORM是更常用于指代这些框架的术语。 这就是Hibernate被称为ORM框架的原因。

JPA用于将应用程序类映射到数据库中的表。

实体管理器:定义映射后,它将处理与数据库的所有交互。
JPQL(Java持久性查询语言):它提供了一种编写查询以对实体执行搜索的方法。 它不同于SQL查询。 JPQL查询已经了解实体之间定义的映射。 如果需要可以添加其他条件。
标准API:它定义了一个基于Java的API来对数据库执行搜索


参考文档:

https://www.cnblogs.com/ityouknow/p/5891443.html

https://developer.ibm.com/zh/articles/os-cn-spring-jpa/

https://www.cnblogs.com/dreamroute/p/5173896.html 推荐


关于是JPA好,还是mybatis好,也有文章进行过激烈的讨论,主要是评论内容 https://juejin.im/post/6844903857571495944


本作品系原创,采用《署名-非商业性使用-禁止演绎4.0 国际》许可协议.转载请说明出处
本文链接:https://www.upupor.com/u/20091814066177824768 复制分享

无评论内容,快来评论吧