Spring Data 什么是Spring Data 理解

介绍

Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性。

它使数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得简单易用。这是一个伞形项目,其中包含许多特定于给定数据库的子项目。这些项目是通过与这些激动人心的技术背后的许多公司和开发人员合作开发的。

特征
  • 强大的存储库和自定义对象映射抽象
  • 从存储库方法名称派生动态查询
  • 实现域基类提供基本属性
  • 支持透明审核(创建,最后更改)
  • 可以集成自定义存储库代码
  • 通过JavaConfig和自定义XML命名空间轻松实现Spring集成
  • 与Spring MVC控制器的高级集成
  • 跨存储持久性的实验支持
主要模块

Spring Data主要使用的一些模块,根据需要选择对应的一些功能模块。

Spring Data common - 支持每个Spring Data模块的Core Spring概念。
Spring Data JDBC - 对JDBC的Spring Data存储库支持。
Spring Data JPA - 对JPA的Spring Data存储库支持。
Spring Data MongoDB - 对MongoDB的基于Spring对象文档的存储库支持。
Spring Data Redis - 从Spring应用程序轻松配置和访问Redis。
Spring Data JDBC Ext - 支持标准JDBC的数据库特定扩展,包括对Oracle RAC快速连接故障转移的支持,AQ JMS支持以及对使用高级数据类型的支持。
Spring Data KeyValue - Map基于库和SPI轻松建立键值存储一个Spring数据模块。
Spring Data LDAP - 对Spring LDAP的 Spring Data存储库支持。
Spring Data REST - 将Spring Data存储库导出为超媒体驱动的RESTful资源。
Spring Data for Pivotal GemFire - 轻松配置和访问Pivotal GemFire,实现高度一致,低延迟/高吞吐量,面向数据的Spring应用程序。
Spring Data for Apache Cassandra - 轻松配置和访问Apache Cassandra或大规模,高可用性,面向数据的Spring应用程序。
Spring Data for Apace Geode - 轻松配置和访问Apache Geode,实现高度一致,低延迟,面向数据的Spring应用程序。
Spring Data for Apache Solr- 为面向搜索的Spring应用程序轻松配置和访问Apache Solr。

JPA Spring Data 概述

JPA Spring Data: 致力于减少数据访问层(DAO)的开发量。开发者唯一要做的,就只是声明持久层的接口,其他都交给Spring Data JPA 来帮你完成!

框架怎么可能代替开发者实现业务逻辑呢?比如:当有一个UserDao.findUserById()这样一个方法声明,大致应该能判断出这是根据给定条件的ID查询出满足条件的User对象。Spring Data JPA 做的便是规范方法的名字,根据符合规范的名字来确定方法需要实现什么样的逻辑。

Spring Data JPA HelloWorld

使用Spring Data JPA进行持久层开发需要的四个步骤:

  • 配置Spring 整合 JPA

  • 在Spring 配置文件中配置Spring Data ,让Spring 为声明的接口创建代理对象。配置了jpa:repositories后,Spring 初始化容器将会扫描base-package 指定的包目录及其子目录,为继承Repository 或其子接口的接口创建代理对象,并将代理对象注册为Spring Bean ,业务层便可以通过Spring自动封装的特性来直接使用该对象。

  • 声明持久层的接口,该接口继承 Repository ,Repository是一个标记型接口,它不包含任何方法,如必要,Spring Data 可实现Repository其他子接口,其中定义了一些常用的增删改查,以及分页相关的方法。

  • 在接口中声明需要的方法 。Spring Data 将根据给定的策略(具体策略稍后讲解)来为其生成实现代码。

Repository 接口

1、Repository是一个空接口,即是一个标记接口

2、若我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个Repository Bean 纳入到IOC容器中,进而可以在该接口中定义满足一定规范的方法

3、实际上,也可以通@RepositoryDefinition(domainClass=Person.class,idClass=Integer.class) 注解来代替 extends Repository<Person, Integer>

Repository 子接口

在eclipse 中选中Repository ,Ctrl + T ,有多个子接口和实现类

继承关系如下:

①、Repository :仅仅是一个标识,表名任何继承它的均为仓库接口类

②、CurdRepository : 继承Repository ,实现了一组CURD相关的方法

③、PagingAndSortingRepository :继承CurdRepository ,实现了一组分页排序相关的方法

④、JpaRepository : 继承PagingAndSortingRepository ,实现一组Jpa 规范相关的方法

⑤、自定义 的 XXXRepository :需要继承JpaRepository ,这样的XxxRepository 接口就具备了通用的数据访问控制层的能力。

⑥、JpaSpecificationExecutor :不属于Repository 体系,实现一组JpaCriteria 查询相关的方法

Spring Data Repository 查询方法定义规范

简单查询条件 :查询某一个实体类或是集合

在Repository 子接口中声明方法:

①、不是随便声明的,而需要符合一定的规范

②、查询方法以 find | read | get 开头

③、涉及条件查询时,条件的属性用条件关键字连接

④、要注意的是:条件属性以首字母大写

⑤、支持属性的级联查询。若当前类有符合条件的属性,则优先使用,而不使用级联属性。若需要使用级联属性,则属性之间使用_连接

spring data 支持的关键字
相关推荐
garmin Chen7 分钟前
从 Transformer 到 Agent:大模型技术全景解析
java·人工智能·python·深度学习·transformer
愚公移码12 分钟前
蓝凌EKP18产品:流程引擎技术篇之流程核心概念模型
java·人工智能·流程引擎·蓝凌
Full Stack Developme19 分钟前
Apache Tika 教程
java·开发语言·python·apache
鹅城剑仙23 分钟前
Spring Boot 微服务架构设计与最佳实践
spring boot·后端·微服务
鹅城剑仙33 分钟前
Java线程池完全指南
java
李白的天不白35 分钟前
SmartAdmin(基于 Spring Boot 框架)中配置跨域请求 VUE3 设置请求头
java·前端
橙子进阶之路37 分钟前
Java线程(CompletableFuture)
java·开发语言
鹅城剑仙1 小时前
Java CompletableFuture 异步编程完全指南
java
2601_961875241 小时前
法考备考计划表|学习计划|资料已整理
java·开发语言·学习·eclipse·tomcat·c#·hibernate
重生之我是Java开发战士1 小时前
【Java SE】多线程(三):单例模式,阻塞队列,线程池与定时器
java·javascript·单例模式