- 内容提要
- 序
- 前言
- 第一部分 背景知识
- 第 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
- 关于封面
14.6 使用 Repository
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 领域类
每个领域对象都使用了 @Region 注解。按照默认的约定,域名称与类的简单名称相同。但是,我们可以将注解值设为自定义的域名来覆盖它。如果已提供域元素的话,它必须与域名称相对应,也就是域元素的 id 属性或 name 属性的值。常见的属性,例如 @PersistenceConstructor(如示例 14-14 所示)和 @Transient 的工作方式与我们的预期相符。
示例 14-14 Product 领域类
14.6.2 创建 Repository
GemFire Repository 支持基本的 CRUD 与查询操作,可以使用 Spring Data 通用的方法名查询映射机制来定义。此外,可以使用 @Query 来配置 Repository 的方法执行任意的 OQL 查询,如示例 14-15 所示。
示例 14-15 ProductRepository 接口
可以使用专有的 gfe-data 命名空间来启用 Repository 的查找功能,它与核心的 gfe 命名空间并没有在一起。另外,如果使用 Java 配置的话,只要在配置类简单地添加 @EnableGemfireRepositories 注解即可,如示例 14-16 所示。
示例 14-16 使用 XML 启用的 GemFire Repository
14.6.3 PDX 序列化
PDX 是 GemFire 特有的序列化库,它具备高效率、可配置特性并且可以与 C#或 C ++编写的 GemFire 客户端应用程序交互,还支持对象版本化的特性。在一般情况下,对象进行网络传输和磁盘持久化的操作时必须要被序列化。如果缓存条目已经序列化,就会以序列化的形式存储。对于分布式拓扑结构通常也是这样。没有持久化备份的独立缓存,通常不进行序列化。
如果没有启用 PDX,将会使用 Java 序列化。在这种情况下,领域类和所有非瞬态属性必须要实现 java.io.Serializable。但 PDX 并不需要这样做,此外,PDX 是高度可配置的,可以个性化定制从而对序列化进行优化或增强,以满足应用的需求。
示例 14-17 展示了如何使用 PDX 配置 GemFire Repository。
示例 14-17 配置 MappingPdxSerializer
MappingPdxSerializer 会自动织入默认的映射上下文,这也是 Repository 所使用的。这里有一个限制需要注意,那就是每个缓存的实例只能有一个 PDX 序列器,因此如果正在使用 PDX Repository 的话,最好设置专用的缓存节点(即不要使用同样的程序来管理非 Repository 的域)。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论