- 内容提要
- 序
- 前言
- 第一部分 背景知识
- 第 1 章 Spring Data 项目
- 第 2 章 Repository:便利的数据访问层
- 第 3 章 使用 Querydsl 实现类型安全的查询
- 第二部分 关系型数据库
- 第 4 章 JPA Repository
- 第 5 章 借助 Querydsl SQL 实现类型安全的 JDBC 编程
- 第三部分 NoSQL
- 第 6 章 MongoDB: 文档存储
- 第 7 章 Neo4j:图数据库
- 第 8 章 Redis:键/值存储
- 第四部分 快速应用开发
- 第 9 章 使用 Spring Roo 实现持久层
- 第 10 章 REST Repository 导出器
- 第五部分 大数据
- 第 11 章 Spring for Apache Hadoop
- 第 12 章 使用 Hadoop 分析数据
- 第 13 章 使用 Spring Batch 和 Spring Integration 创建大数据管道
- 第六部分 数据网格
- 第 14 章 分布式数据网格:GemFire
- 关于封面
1.2 主题概述
Spring Data 的核心目标是:支持对所有的存储进行资源配置,从而实现对该存储的访问。这种支持主要是通过 XML 命名空间和 Spring JavaConfig 的支持类实现的,这可以使我们轻松地对 Mongo 数据库、嵌入式 Neo4j 实例等建立访问。除此之外,它也集成了 Spring 的核心功能,如 JMX。这意味着某些存储可以通过原生 API 暴露统计数据,这些数据将会由 Spring Data 暴露给 JMX。
大部分的 NoSQL Java API 并未支持将领域对象映射到存储的数据抽象(MongoDB 中的文件,Neo4j 中的节点与关系)。因此,当使用原生的 Java 驱动程序进行读取和写入操作时,通常需要编写大量的代码来将数据映射到应用程序的领域对象。所以 Spring Data 模块最核心的部分是一个映射和转换的 API,用来获取要持久化的领域类中的元数据,使得任意领域对象都可以转换成存储用的数据类型。
在此基础上,就如同著名的 Spring JdbcTemplate、JmsTemplate 等,我们也会看到以模板模式实现的 API,其中包括 RedisTemplate、MongoTemplate 等。或许你已经知道,这些模板提供了让我们可以执行常用操作的辅助方法。例如:在一条语句中持久化一个对象的时候,能够自动进行资源管理和异常处理。此外,还提供了回调接口的 API,允许在资源管理和异常处理过程中使用存储原生的 API,以提高灵活性。
这些功能给我们提供了一个工具箱,使得我们可以像使用传统的数据库那样来实现数据访问层。后面的章节将会详细介绍这些功能。为了让程序变得更简单,Spring Data 还在模板实现的基础上提供了一个存储(repository)抽象,这将减少数据访问对象在实现一个普通接口时去定义通用场景的代价,如标准的 CRUD(创建、读取、更新、删除)操作以及执行存储支持的查询语句。事实上,这种抽象位于最顶层,而且它会尽可能在合理范围内将不同存储 API 融合在一起。因此,存储的操作将拥有许多共同点。这也是后面会有专门的章节(第 2 章)来介绍基本编程模型的原因。
接着,我们来看一下用来展示这些特定存储模块功能所用的示例代码和领域模型。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论