创建使用Java Persistence API的存储库是一个繁琐的过程,需要大量时间,并且需要大量样板代码。 通过执行以下步骤,我们可以消除一些样板代码:

  1. 创建一个抽象的基础存储库类,该类为实体提供CRUD操作。
  2. 创建扩展抽象基础存储库类的具体存储库类。

这种方法的问题在于,我们仍然必须编写用于创建数据库查询并调用它们的代码。 更糟的是,每次要创建新的数据库查询时,我们都必须这样做。 这是浪费时间

如果我告诉您我们可以创建JPA存储库而无需编写任何样板代码,您会怎么说?

很有可能您可能不相信我,但是Spring Data JPA可以帮助我们做到这一点。 Spring Data JPA项目的网站指出 :

实现应用程序的数据访问层已经很长一段时间了。 为了执行简单查询以及执行分页和审核,必须编写太多样板代码。 Spring Data JPA旨在通过将工作量减少到实际需要的数量来显着改善数据访问层的实现。 作为开发人员,您将编写包括自定义finder方法在内的存储库接口,Spring会自动提供实现

这篇博客文章介绍了Spring Data JPA。 我们将学习Spring Data JPA的真正含义,并快速浏览一下Spring Data存储库接口。

让我们开始吧。

什么是Spring Data JPA?

Spring Data JPA不是JPA提供程序 。 它是一个库/框架,在我们的JPA提供程序的顶部添加了额外的抽象层。 如果我们决定使用Spring Data JPA,则我们应用程序的存储库层包含以下三层:

  • Spring Data JPA通过扩展Sp​​ring Data存储库接口为创建JPA存储库提供支持。
  • Spring Data Commons提供了特定于数据存储的Spring Data项目共享的基础结构。
  • JPA Provider实现Java Persistence API。

下图说明了存储库层的结构:

补充阅读:

  • Spring Data JPA与JPA:有什么区别?

乍一看,Spring Data JPA似乎使我们的应用程序变得更加复杂。 它的确在我们的存储库层中增加了一层,但是与此同时,它使我们无需编写任何样板代码。

听起来这是一个不错的权衡。 对?

Spring数据存储库简介

Spring Data JPA的功能在于由Spring Data Commons项目提供并由特定于数据存储的子项目扩展的存储库抽象。

我们可以使用Spring Data JPA而不用注意存储库抽象的实际实现,但是我们必须熟悉Spring Data存储库接口。 这些接口描述如下:

首先 ,Spring Data Commons项目提供以下接口:

  • Repository <T,ID扩展为Serializable>接口是一个标记接口,具有两个用途:

    1. 它捕获托管实体的类型和实体ID的类型。
    2. 它有助于Spring容器在类路径扫描期间发现“具体的”存储库接口。
  • CrudRepository <T,ID扩展为Serializable>接口为受管实体提供CRUD操作。
  • PagingAndSortingRepository <T,ID扩展为Serializable>接口声明用于对从数据库中检索到的实体进行排序和分页的方法。
  • QueryDslPredicateExecutor <T>接口不是“存储库接口”。 它声明使用QueryDsl 谓词对象从数据库检索实体的方法。

其次 ,Spring Data JPA项目提供以下接口:

  • JpaRepository <T,ID扩展为Serializable>接口是JPA特定的存储库接口,它将公共存储库接口声明的方法组合在单个接口后面。
  • JpaSpecificationExecutor <T>接口不是“存储库接口”。 它声明使用通过使用JPA标准API的Specification <T>对象从数据库检索实体的方法。

存储库层次结构如下所示:

很好,但是我们如何使用它们呢?

这是一个公平的问题。 本教程的下一部分将回答该问题,但实际上我们必须遵循以下步骤:

  1. 创建一个存储库接口,并扩展Spring Data提供的存储库接口之一。
  2. 将自定义查询方法添加到创建的存储库界面(如果需要的话)。
  3. 将存储库接口注入到另一个组件,并使用Spring自动提供的实现。

让我们继续并总结从这篇博客文章中学到的知识。

摘要

这篇博客文章教会了我们两件事:

  • Spring Data JPA不是JPA提供者。 它只是“隐藏”了其存储库抽象之后的Java Persistence API(和JPA提供程序)。
  • Spring Data提供了多个用于不同目的的存储库接口。

本教程的下一部分描述了如何获取所需的依赖关系。

如果您想了解更多有关Spring Data JPA的信息,请阅读我的Spring Data JPA教程 。

翻译自: https://www.javacodegeeks.com/2014/12/spring-data-jpa-tutorial-introduction.html

Spring Data JPA教程:简介相关推荐

  1. Spring Data JPA教程

    在Java类或对象与关系数据库之间管理数据是一项非常繁琐且棘手的任务. DAO层通常包含许多样板代码,应简化这些样板代码,以减少代码行数并使代码可重复使用. 在本教程中,我们将讨论Spring数据的J ...

  2. Spring Data JPA教程:获取所需的依赖关系

    在创建使用Spring Data JPA的应用程序之前,我们需要获取所需的依赖关系. 这篇博客文章标识了必需的组件,并描述了如何使用Maven获得它们. 让我们开始吧. 其他阅读:如果您不熟悉Spri ...

  3. Spring Data JPA 教程(翻译)

    写那些数据挖掘之类的博文 写的比较累了,现在翻译一下关于spring data jpa的文章,觉得轻松多了. 翻译正文: 你有木有注意到,使用Java持久化的API的数据访问代码包含了很多不必要的模式 ...

  4. Spring Data JPA教程第一部分:配置

    Spring Data JPA是一个旨在简化基于JPA的存储库的创建并减少与数据库通信所需的代码量的项目. 在我的工作和个人爱好项目中,我已经使用了一段时间,确实使事情变得更加简单和整洁. 现在是时候 ...

  5. Spring Data JPA教程,第一部分: Configuration(翻译)

    Spring Data JPA项目旨在简化基于仓库的JPA的创建并减少与数据库交互的所需的代码量.本人在自己的工作和个人爱好项目中已经使用一段时间,它却是是事情如此简单和清洗,现在是时候与你分享我的知 ...

  6. Spring Boot 之Spring data JPA简介

    文章目录 添加依赖 添加entity bean 创建 Dao Spring Data Configuration 测试 Spring Boot 之Spring data JPA简介 JPA的全称是Ja ...

  7. Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | http://blog.di ...

  8. Spring Data Solr教程:Solr简介

    大多数应用程序必须具有某种搜索功能. 问题在于搜索功能通常是巨大的资源消耗,它们可能通过给数据库造成沉重的负担而破坏我们应用程序的性能. 因此,将负载转移到外部搜索服务器是个好主意. 这是我的Spri ...

  9. node在regedit配置哪个位置_Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置

    上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...

最新文章

  1. 想入门图深度学习?这篇55页的教程帮你理清楚了脉络
  2. springmvc + springboot + mybatis java b2b2c电子商城系统源码...
  3. 半环(semiring)的数学概念
  4. 颜水成团队开源VOLO:无需额外数据,首次在ImageNet上达到87.1%的精度
  5. Postgres中tuple的组装与插入
  6. selenium python下载_使用Selenium、Chrome和Python下载PDF
  7. 欣赏你的孩子(ZT)
  8. SQL Proc(存储过程)/tran(事物)
  9. maven私服Nexus3.2的使用
  10. 全面的软件测试-软件测试图解
  11. linux下查看opencv版本
  12. 平面设计基础(PS)知识点总结
  13. 解决IE浏览器的Automation 服务器不能创建对象的问题
  14. B. Silly Mistake(模拟、思维)
  15. Linux基础 - 服务管理(systemd)
  16. 基于OpenCASCADE自制三维建模软件(六)瓶子模型例程
  17. 北京现代APP每日问答合集(持续更新)
  18. stm32之中断系统
  19. 计算机基础中如何属性隐藏,-XP系统如何显示隐藏的文件夹
  20. 文件存储 云服务器,文件存储 云服务器

热门文章

  1. SecureCRT连接Linux的操作步骤
  2. php 编写线程教程,php 实现多线程
  3. java内部类选择题_java内部类详解(附相关面试题)
  4. mega x_[MEGA DEAL] 2020年完整的Java Master Class Bundle(96%)
  5. graal java_使用SparkJava和Graal的本机微服务
  6. selenide_使用Selenide进行有效的UI测试
  7. xp系统 javafx_使用JavaFX构建React系统
  8. jcache_窥探JCache API(JSR 107)
  9. 使用类似Lambda的语法切换为Java中的表达式
  10. OAuth 2.0 Java指南:5分钟保护您的应用程序安全