如何在 SAP 云平台上使用 MongoDB
我想在 SAP 云平台的 Cloud Foundry 环境下使用 MongoDB 服务,但是在 Service Marketplace 上找不到这个服务。
命令行 cf marketplace
返回的结果也没有 MongoDB 相关的服务:
解决方案
退回到 SAP 云平台的 Global Account,点击 Entitlement,发现没有给 Subaccount 分配 MongoDB:
Quota 分配成 1,保存即可。
再回到 organization 的 space 下面,发现现在 MongoDB 服务已经处于可用状态了。
命令行 cf marketplace
现在能够看到 MongoDB 服务的版本了:
下面是在 SAP 云平台 CloudFoundry 环境使用 MongoDB 服务的详细步骤。
- 使用命令行
cf marketplace
查看当前 SAP 云平台的 MongoDB 服务的版本号:在我使用的 SAP 云平台上是v3.0-dev
:
使用如下命令行创建一个服务实例:
cf create-service mongodb v3.0-dev mongo-service
- 到 Java 项目根目录下,使用命令行
mvn package
:
能看到如下的输出:
该命令会生成一个 hcp-cf-mongodb-tutorial-1.0-SNAPSHOT.jar
:
- 编辑
manifest.yml
,指定部署到 SAP 云平台上的程序名称:
- 使用命令行
cf push
进行部署。
部署成功后,在 Cockpit 里能看到该应用处于 Started 状态:
浏览器访问该应用,能看到如下输出:
该输出是 Java 项目里的 RootController 生成的:
最后我们对 SAP UI5 Repository 和 MongoDB Repository 进行比较,作为本系列的结尾。
UI5 Repository
从本地通过 Eclipse team provider 上传到 ABAP gateway system 的 UI5 应用,都会自动生成一个 UI5RepositoryPathMapping.xml
文件,里面记录的是 debug version 的脚本文件名称和路径的映射关系。如下图所示:
控制这个映射文件的访问工具类 manipulation utility 的名称:
UI5/CL_UI5_REP_PATH_MAPPER
SpringBoot 应用里的 MongoDB Repository
和 ADBC 与 JDBC 不同,通过 MongoDB Repository 访问 MongoDB 数据库,并不会在代码中出现用字符串拼接的 SQL 语句:
例如我们查看 findByName
的定义:
findByName 的实现:第 20 行代码构造一个 Query 实例,然后将其传入 21 行 mongoTemplate
的 find
方法:
总结
本文首先介绍了如何使用 SpringBoot 应用开发 Restful API,从而能够在浏览器里就能对 MongoDB 的读写操作进行测试,接着介绍了如何在通用的云平台 CloudFoundry 环境里消费 MongoDB 服务。
本教程前两篇文章:
- MongoDB 入门教程系列之一:开发环境搭建以及 Node.js 和 Java 的读写访问
- MongoDB 入门教程系列之二:使用 Spring Boot 操作 MongoDB