《Spring Data实战》——导读

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 数据访问领域在过去的7年间发生了重要的变化。过去30年间一直占据企业级数据存储和处理核心位置的关系型数据库已经不能再独领风骚了。在过去的7年间诞生了很多可选的数据存储形式,当然也有的面临着消亡,它们被使用到了带有关键任务的企业级应用程序之中。


35cd4a16fe05a1eed74f2ba84fbf3c0591c07cb2

**

前言
**
数据访问领域在过去的7年间发生了重要的变化。过去30年间一直占据企业级数据存储和处理核心位置的关系型数据库已经不能再独领风骚了。在过去的7年间诞生了很多可选的数据存储形式,当然也有的面临着消亡,它们被使用到了带有关键任务的企业级应用程序之中。这些新的数据存储形式是为了解决特定的数据访问问题而设计的,使用关系型数据库通常无法高效地解决这些问题。

将关系型数据库推到拐点的一个问题就是扩展性(scale)。试问,我们如何将几百甚至几千TB(terabyte)的数据存储到关系型数据库中?这个问题让我想到了一个笑话,病人说:“大夫,我一这样动就疼”而医生则说:“那就别这样动呗!”暂且把笑话放在一边,存储如此巨量数据的推动力是什么呢?在2001年,IDC报告说“人们创造和复制的数据将会超过1.8ZB(zettabytes),而且每隔两年就会翻番[1]”。新的数据涵盖各种类型,如媒体文件、日志文件、传感器数据(RFID、GPD、遥测设备……)、Twitter上的消息以及Facebook上的帖子。尽管对于企业来讲存储于关系型数据库中的数据依然非常重要,但是这些新型的数据并没有存储在关系型数据库之中。
很多的公司和科研实验室在大数据这个词流行起来之前就开始这样做了。当前的过程与以往的不同在于,智能的数据分析所带来的价值要高于硬件的成本。现在执行这种类型的分析不再需要购买4万美元一颗的CPU了;商用的硬件集群中每颗CPU的价格是1000美元。对于大型的数据集,存储区域网络(Storage Area Network,SAN)以及网络附属存储(Network Attached Storage,NAS)的价格较为昂贵:每GB(gigabyte)是1~10美元,如果复本构建到数据库中而不是硬件之中,那本地磁盘的成本每GB只有0.05美元。对于商用的硬件集群,使用本地磁盘的数据传输率也要比基于SAN或NAS的系统更高──对于相同价格的系统,前者能快500倍。在软件方面,新的数据访问技术大多数都是开源的。尽管开源并不意味着零成本,但是这显然会降低使用门槛,相对于传统的商业软件,它们能够降低采购的整体成本。
要摆脱ACID特性的主要驱动力在于,很多的应用程序提高了可扩展写(scaling write)的优先级,并且希望即便系统的某一部分失效,其他部分依然可以继续运作。尽管在关系型数据库中,可以通过在数据库之前使用内存缓存来实现可扩展读,但是进行可扩展写要困难得多。为了标识这类应用程序,通常将其命名为“BASE”系统,在这里缩写代表着基本可用(basically available)、可扩展性(scalable)、最终一致性(eventually consistent)。具有键/值数据模型的分布式数据网格并没有归类到这种新的NoSQL数据库之中。然而,它们提供了与NoSQL数据库类似的特性,如数据的可扩展性以及组合计算能力和数据的分布式计算功能。

从上面简短的介绍中,你能够了解到数据访问的现状,目前正在发生的是一场革命,关注数据的人会非常兴奋。关系型数据库并没有消亡,在很多企业的运作中它依然是核心,并且会持续很长的时间。但是,趋势很明显:新的数据访问技术解决了关系型数据库所无法解决的问题,因此作为开发人员,我们必须要扩充自己的技能,要能够处理这两种技术。

Spring框架长期以来都致力于简化Java应用程序的开发,尤其是使用Java数据库连接(Java Database Connectivity,JDBC)或对象关系映射器编写基于RDBMS的数据访问层方面。在本书中,我们力图帮助开发人员使用这些新技术高效地编写Java应用程序。Spring Data项目直接处理这些新的技术,因此你能够将已有的Spring知识延伸到它们之中,或者通过使用Spring Data,也能够更深入地学习Spring。不过,我们也没有抛弃关系型数据库。Spring Data为了Spring能支持RDBMS扩展了新功能。
本书希望为你提供实用的Spring Data项目的介绍,该项目的目的在于帮助Java开发人员使用最新的数据处理和管理工具,同时能够以最新的方式使用传统的数据库。我们首先会为你介绍这个项目,阐述SpringSource以及该团队背后的驱动力,并描述了示例工程的领域模型,这个例子将会在后面的章节中使用,此外还介绍了如何获取和搭建示例代码(第1章)。

接着将会讨论Spring Data Repository的基本理念,因为它们是后续各种数据存储中都会涉及的通用主题(第2章)。对于Querydsl也是如此,我们将会在第3章中讨论这个话题。这两章为探讨特定存储与Repository的集成以及高级查询功能奠定了坚实的基础。

为了从Java开发人员熟悉的领域开始,我们会用一些时间来介绍传统的持久化技术,如JPA(第4章)和JDBC(第5章)。这两章阐述了在Spring已有的对JPA和JDBC的支持之上,Spring Data的模块提供了什么新特性。

在完成这些之后,将会引入Spring Data项目所支持的NoSQL存储:以MongoDB为例介绍文档数据库(第6章),以Neo4j为例讲解图数据库(第7章),以Redis为例讲解键/值存储(第8章)。列族数据库HBase将会在稍后的章节中介绍(第12章)。这些章节中涵盖的内容包括了将领域类映射到特定存储的数据结构、通过所提供的应用程序编程接口(Application Programming Interface,API)与存储进行便捷地交互以及对Repository抽象的使用。

目录

**[第一部分 背景知识
第1章 Spring Data项目
1.1 为Spring开发人员提供的NoSQL数据访问功能](https://yq.aliyun.com/articles/91697)**
1.2 主题概述
1.3 领域
1.4 示例代码
1.4.1 将源码导入到IDE
**[第2章 Repository:便利的数据访问层
2.1 快速入门](https://yq.aliyun.com/articles/91744)**
2.2 定义查询方法
2.2.1 查找查询的策略
2.2.2 衍生查询
2.2.3 分页和排序
2.3 定义Repository
2.3.1 调整Repository接口
2.3.2 手动实现Repository方法
2.4 IDE集成
2.4.1 Intelli IDEA

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
28天前
|
XML Java 数据库连接
spring boot 参数的过滤注解与实战
在Spring Boot应用中,对于入参的过滤,通常会涉及到对Web层的数据验证和处理。Spring Boot借助Spring框架提供了强大的验证框架支持,主要基于JSR-303/JSR-380(Bean Validation API)规范,以及Spring自身的@Valid或@Validated注解来实现请求参数的验证。以下是一些常见的使用案例来展示如何对参数进行过滤和验证。
24 1
|
1月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
21天前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
44 1
|
21天前
|
存储 XML 缓存
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南(一)
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南
42 0
|
7天前
|
Java 数据库 Spring
切面编程的艺术:Spring动态代理解析与实战
切面编程的艺术:Spring动态代理解析与实战
23 0
切面编程的艺术:Spring动态代理解析与实战
|
27天前
|
存储 缓存 安全
Spring Boot从入门到实战
本课程从SpringBoot的最基础的安装、配置开始到SpringBoot的日志管理、Web业务开发、数据存储、数据缓存,安全控制及相关企业级应用,全程案例贯穿,案例每一步的都会讲解实现思路,全程手敲代码实现。让你不仅能够掌SpringBoot的应用,还能了解背后的原理,学习完本课程后,能够让你动手独立完成一个中小型的SpringBoot Web应用开发。
19 1
Spring Boot从入门到实战
|
1月前
|
Java 数据库 Spring
如何使用Spring Data JPA完成审计功能
如何使用Spring Data JPA完成审计功能
|
1月前
|
XML Java 数据库
【二十四】springboot整合spring事务详解以及实战
【二十四】springboot整合spring事务详解以及实战
97 0
|
1月前
|
人工智能 负载均衡 Java
【Spring实战】动手拥有自己的ai小站!使用Springboot整合Spring Cloud Gateway实现对接open ai并实现令牌记量和限制对话次数
【Spring实战】动手拥有自己的ai小站!使用Springboot整合Spring Cloud Gateway实现对接open ai并实现令牌记量和限制对话次数
|
1月前
|
安全 Java 数据安全/隐私保护
【Spring底层原理高级进阶】【SpringCloud整合Spring Security OAuth2】深入了解 Spring Security OAuth2:底层解析+使用方法+实战
【Spring底层原理高级进阶】【SpringCloud整合Spring Security OAuth2】深入了解 Spring Security OAuth2:底层解析+使用方法+实战