开发者社区> chszs> 正文

Spring Data JPA开发手册——1.介绍

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/42737553 《Spring Data JPA开发手册——1.介绍》 作者:chszs,转载需注明。
+关注继续查看
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/42737553

《Spring Data JPA开发手册——1.介绍》

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

我发现网上几乎没有讲述Spring Data JPA原理的文章,很多Guide一上来就是如何配置,接着就是几大段代码,没有一篇文章能把Spring Data JPA原理及构成说清楚的。所以,我写了这个系列的文章。

用Java Persistence API库创建持久层是很繁琐的,也很耗时,而且需要大量的样板代码。我们可以通过以下步骤消除一些样板代码:

1)创建一个抽象的基类,它提供了对实体的CRUD操作。

2)创建继承此基类的具体操作类。

这种方法的问题是,我们仍然要编写创建数据库查询和调用它们的代码。更糟糕的是,当我们要创建新的数据库查询时,我们还是要这么做一次。这太浪费时间了。

如果我告诉你,我们可以在创建JPA持久层时无需编写任何样板代码,你信不?

Spring Data JPA可以帮助我们做到这一点。Spring Data JPA官网声称:

实现应用程序的数据访问层一直是很繁琐的,总是要写很多的样板代码来执行简单的查询,比如分页、审计。Spring Data JPA旨在改进数据访问层的实现,减少开发时间。开发者在编写数据库接口时,包括自定义的查询方法,Spring Data JPA会自动提供其实现。

本文介绍了Spring Data JPA,下面让我们开始吧。

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

一、什么是Spring Data JPA

Spring Data JPA不是一个JPA实现,它是一个框架或库,提供了JPA Provider之上的一个额外的抽象层。如果我们决定使用Spring Data JPA,那么应用程序的后端部分至少会包含三层:

1)Spring Data JPA

Spring Data JPA提供了JPA Provider的抽象层。

2)Spring Data Commons

Spring Data Commons提供了共享的基础构件。

3)JPA Provider

Java Persistence API的实现。

看起来Spring Data JPA使我们的应用程序变得更复杂,从某些方面来说确实如此。但是要明白,Spring Data JPA减少了我们编写样板代码的时间。

项目持久层的结构如图所示:


作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

二、Spring Data Repositories介绍

Spring Data JPA依赖于Spring Data Commons——它是一个数据库抽象层,提供了共享的数据库基础构件。

我们使用Spring Data JPA时无需关注任何数据库抽象层的实现,但必须熟悉Spring Data数据库接口。这些接口的描述如下:

1、Spring Data Commons提供了如下接口

1)Repository<T, ID extends Serializable>接口

它是一个标记接口,有两个目标:

一是捕获托管实体的类型和实体ID的类型

二是在类路径扫描期间,帮助Spring容器找到具体的数据仓库接口。

2)CrudRepository<T, ID extends Serializable>接口

提供了对托管实体的CRUD操作。

3)PagingAndSortingRepository<T, ID extends Serializable>接口

提供了对从数据库取回的实体的分页和排序操作方法。

4)QueryDslPredicateExecutor<T>接口

此接口不是数据仓库接口。它声明了通过查询DSL谓词对象检索数据库的方法。

2、Spring Data JPA提供了如下接口

1)JpaRepository<T, ID extends Serializable>接口

它是一个JPA特定的数据仓库接口,是Commons数据仓库接口背后的单一接口声明的方法组合。

2)JpaSpecificationExecutor<T>接口

此接口不是数据仓库接口。它声明了通过使用JPA标准API的Specification<T>对象从数据库取回实体的方法。

数据仓库的分层看起来如图所示:


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Boot 正确中使用JPA实战
Spring Boot 正确中使用JPA实战
22 0
Spring data Jpa 提供的validator验证
Spring data Jpa 提供的validator验证
35 0
Spring boot+jpa根据实体类自动创建数据表
Spring boot+jpa根据实体类自动创建数据表
154 0
Spring 项目快速整合 JPA
前言 JDBC、JTA、JPA 都是 Java 与数据库打交道的标准,由于这些规范分别定义了不同的事务接口,Spring 对这些规范进行了整合,提供了统一的事务 API。Spring 的事务管理需要对这些标准做一些适配操作,才能转换为同一的接口,这篇就来谈谈如何在 Spring 中整合 JPA。
47 0
Spring Data Jpa 之Specification 动态查询
Spring Data Jpa 之Specification 动态查询
121 0
Spring Data jpa之jpql查询@Query注解
Spring Data jpa之jpql查询@Query注解
65 0
spring data jpa之jpql查询
spring data jpa之jpql查询
28 0
Spring Data jpa学习之增删改查
Spring Data jpa学习之增删改查
49 0
Spring与SpringBoot整合Spring Data JPA及使用(三)
Spring与SpringBoot整合Spring Data JPA及使用
62 0
Spring与SpringBoot整合Spring Data JPA及使用(二)
Spring与SpringBoot整合Spring Data JPA及使用
47 0
+关注
chszs
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
电商网站需求分析和架构设计Spring Boot2.6入门
立即下载
云上Docker的Spring Cloud微服务应用实践分享
立即下载
Spring Boot 2.6.0电商网站开发实战
立即下载