返回介绍

14.6 使用 Repository

发布于 2025-04-22 19:57:23 字数 2079 浏览 0 评论 0 收藏

Spring Data GemFire 1.2.0 发布版本引入了 Spring Data Repository 对 GemFire 的基础支持。它支持第 2 章中所提到的 Repository 核心功能,但不包含分页和排序。示例代码将会演示这些功能。

14.6.1 POJO 映射

因为在 GemFire 域中,每个对象需要一个唯一键,所以顶级领域对象 Customer、Order 与 Product 都继承自 AbstractPersistentEntity,它定义了 id 属性,如示例 14-13 所示。

示例 14-13 AbstractPersistentEntity 领域类

P271a

每个领域对象都使用了 @Region 注解。按照默认的约定,域名称与类的简单名称相同。但是,我们可以将注解值设为自定义的域名来覆盖它。如果已提供域元素的话,它必须与域名称相对应,也就是域元素的 id 属性或 name 属性的值。常见的属性,例如 @PersistenceConstructor(如示例 14-14 所示)和 @Transient 的工作方式与我们的预期相符。

示例 14-14 Product 领域类

P271b

14.6.2 创建 Repository

GemFire Repository 支持基本的 CRUD 与查询操作,可以使用 Spring Data 通用的方法名查询映射机制来定义。此外,可以使用 @Query 来配置 Repository 的方法执行任意的 OQL 查询,如示例 14-15 所示。

示例 14-15 ProductRepository 接口

P246

可以使用专有的 gfe-data 命名空间来启用 Repository 的查找功能,它与核心的 gfe 命名空间并没有在一起。另外,如果使用 Java 配置的话,只要在配置类简单地添加 @EnableGemfireRepositories 注解即可,如示例 14-16 所示。

示例 14-16 使用 XML 启用的 GemFire Repository

P272b

14.6.3 PDX 序列化

PDX 是 GemFire 特有的序列化库,它具备高效率、可配置特性并且可以与 C#或 C ++编写的 GemFire 客户端应用程序交互,还支持对象版本化的特性。在一般情况下,对象进行网络传输和磁盘持久化的操作时必须要被序列化。如果缓存条目已经序列化,就会以序列化的形式存储。对于分布式拓扑结构通常也是这样。没有持久化备份的独立缓存,通常不进行序列化。

如果没有启用 PDX,将会使用 Java 序列化。在这种情况下,领域类和所有非瞬态属性必须要实现 java.io.Serializable。但 PDX 并不需要这样做,此外,PDX 是高度可配置的,可以个性化定制从而对序列化进行优化或增强,以满足应用的需求。

示例 14-17 展示了如何使用 PDX 配置 GemFire Repository。

示例 14-17 配置 MappingPdxSerializer

P273a

MappingPdxSerializer 会自动织入默认的映射上下文,这也是 Repository 所使用的。这里有一个限制需要注意,那就是每个缓存的实例只能有一个 PDX 序列器,因此如果正在使用 PDX Repository 的话,最好设置专用的缓存节点(即不要使用同样的程序来管理非 Repository 的域)。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。