KeyValue Repositories
本章介绍 Spring Data 存储库的基础知识以及 KeyValue 的特定内容。在继续了解特定内容之前,请确保你已充分理解基本概念。
Spring Data 仓储抽象的目标是显著减少为各种持久化存储实现数据访问层所需的样板代码量。
小节摘要
📄️ 核心概念
Spring Data 仓储抽象的核心接口是 Repository。它将所管理的领域类以及领域类的标识符类型作为类型参数。该接口主要充当标记接口,用于捕获要处理的类型,并帮助你发现扩展该接口的接口。
📄️ 定义 Repository Interfaces
要定义 repository interface,首先需要定义针对特定 domain class 的 repository interface。该 interface 必须继承 Repository,并以 domain class 和 ID type 作为类型参数。如果想暴露该 domain type 的 CRUD methods,可以继承 CrudRepository,或者其某个变体,而不是 Repository。
📄️ 创建 Repository 实例
本节介绍如何为已定义的 repository interfaces 创建实例和 bean definitions。
📄️ 映射仓库
Map repositories 位于 KeyValueTemplate 之上。使用默认的 PredicateQueryCreator 允许从给定的方法名派生查询和排序表达式,如下例所示:
📄️ 值表达式基础
Value Expressions 是 Spring Expression Language (SpEL) 与 Property Placeholder Resolution 的一种组合。它将程序化表达式的强大求值能力与使用 property-placeholder resolution 从 Environment 中获取值的简洁性相结合,例如配置属性。
📄️ Repository query 关键字
下表列出了 Spring Data repository 查询派生机制通常支持用于表达谓词的主题关键字。请参阅具体 store 的文档以获取受支持关键字的准确列表,因为此处列出的某些关键字在特定 store 中可能不受支持。
📄️ Repository query 返回类型
下表列出了 Spring Data repositories 通常支持的返回类型。不过,请查阅具体 store 的文档,以获取受支持返回类型的准确列表,因为此处列出的某些类型在特定 store 中可能不受支持。