- 内容提要
- 序
- 前言
- 第一部分 背景知识
- 第 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
- 关于封面
9.5 Spring MongoDB JPA Repository 的例子
因为 Spring Data 中包含了对 MongoDB Repository 的支持,所以当使用 Roo 的时候,我们可以将 MongoDB 作为可选的持久化方案。对于 MongoDB 来说,不能采用活动记录风格的持久层,只能使用 Repository。除了这一点区别之外,使用的过程与 JPA 方案基本相同。
9.5.1 创建工程
如果使用 Spring Tool Suite,那么按照之前介绍的步骤来创建新的 Spring Roo 工程。在“Create a new Roo Project”对话框界面中,进行以下设置。
- Project name: roo-spring-data-mongo
- Top level package name: com.oreilly.springdata.roo
- Packaging: WAR
当使用命令行 Roo Shell 时,创建一个名为 roo-spring-data-mongo 的目录。切换到这个新的目录后,可以使用刚刚介绍过的方法启动 Roo Shell。在 roo>提示符中,输入如下的命令:
9.5.2 搭建 MongoDB 持久化
为 MongoDB 搭建持久化配置很简单。可以接受默认设置。如果你愿意的话,可以提供主机、端口、用户名和密码,但是对于默认的本地安装的 MongoDB,默认设置就可以了。所以,输入以下命令即可:
9.5.3 创建实体
当创建实体的时候,没有使用活动记录风格的可选项了,在 JPA 方案中,我们需要提供--activeRecord 参数以屏蔽掉这种方案。现在我们没有必要这样做了,对于 MongoDB 来说,Repository 是默认和唯一的持久层方案。同样,我们从 Address 类开始:
这看起来与 JPA 的例子很相似。当再看 Customer 类时,你所能发现的第一个区别可能是使用 MongoDB 时,没有使用可嵌入的类,它只对 JPA 有效。在 MongoDB 中,只需创建一个简单的类并指定--rooAnnotations 为 true 以启用 @RooJavaBean 的支持。为了使用这个类,需要将域设置为 other。除了这些小的差别,实体声明与 JPA 示例非常类似:
9.5.4 定义 Repository
声明 MongoDB Repository 的方式与 JPA Repository 方式相同,唯一的区别在于 mongo 关键字:
9.5.5 创建 Web 层
Web 层的创建与 JPA 示例完全一样:
不要忘记为 ApplicationConversionServiceFactoryBean 添加转换器,就像在示例 9-3 中为 JPA 所做的那样。
9.5.6 运行示例
现在,可以构建和部署示例了。同样与 JPA 示例一样,只不过需要系统中有正在运行的 MongoDB。关于 MongoDB 的安装和运行,可以参阅本书的第 6 章。
对于 Spring Tool Suite,只需将应用拖曳到 tc server 实例上并启动服务器即可。使用命令行的话,退出 Roo Shell 并在命令行中运行如下的 Maven 命令:
现在打开浏览器并导航到 http://localhost:8080/roo-spring-data-mongo/ ,可以看到如图 9-6 所示的界面。
图 9-6 MongoDB 应用程序
我们的第二个示例应用已经完成了,现在可以添加一些 address 并加入一两个 customer 了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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