到目前为止,都是使用sqlite数据库,但是实际项目几乎不可能用sqlite来跑实际业务。下一步我们将用SAP HANA Database来实现数据持久化,替换掉sqlite,是项目看起来更真实。
首先,找到API Endpoint
在trial subaccount
中,点击左侧的overview
。
找到API Endpoint之后,重新打开一个控制台,设置api
cf api https://api.cf.eu10.hana.ondemand.com/
然后用当前登录用户登陆。
cf login
登陆成功之后会显示当前的用户信息。
下面开始配置数据库。
在项目根目录下使用npm安装依赖
npm install --save-dev @sap/hdi-deploy
在项目根目录下找到.cdsrc.json
并为其添加hana
属性,值为{ "deploy-format": "hdbtable" }
,最后看起来大概是这个样子。
{
"build": {
"target": "."
},
"hana" : {
"deploy-format": "hdbtable"
}
}
接下来执行命令初始化数据库,cds deploy --to hana:bookstore-hana
。
过程中可能出现FAILED,因为之前没有创建过数据库的原因,不用在意,直接忽略。
命令执行完成之后,在项目根目录下会出现一个default-env.json
,这个文件包含了连接数据库的信心。CAP Java通过读取这个文件获得相关的凭证,然后连接HANA数据看。为了实现这个功能,我们需要添加一个依赖。
打开在srv
的文件夹下的pom.xml
(注意不是根目录下的pom.xml),在<dependencies>
下加入依赖。
<dependency>
<groupId>com.sap.cds</groupId>
<artifactId>cds-feature-hana</artifactId>
</dependency>
cds-feature-hana包含了SAP HANA JDBC driver和读取default-env.json的功能。
启动项目,本次启动需要指定环境,mvn spring-boot:run -Dspring-boot.run.profiles=cloud
。启动成功后我们再查看订单,发现原来的订单已经没有了,说明现在服务连的是HANA的数据库了。
添加数据测试一下。
https://workspaces-ws-5bftf-app1.eu10.trial.applicationstudio.cloud.sap/odata/v4/OrdersService/Orders
{
"currency_code": "USD",
"items": [
{
"book_ID": "b7bca6dd-0497-465e-9a5a-56f244174c8c",
"amount": 1
}
]
}
查询结果,/odata/v4/OrdersService/Orders?$expand=items
已经成功连接到HANA 数据库了。