SAP写入mysql_使用JDBC操作SAP云平台上的HANA数据库

本文假设您对JDBC(Java Database Connectivity)有最基本的了解。您也可以将其同ADBC(ABAP Database Connectivity)做对比,细节请参考我的博客: ADBC and JDBC

这篇文章分为两部分,第一部分内容:

1. 介绍如何在SAP Cloud Platform(云平台)上创建一个HANA数据库实例

2. 开发一个Java应用,部署到SAP云平台上。该Java应用使用JDBC操作同样处于SAP云平台上的HANA数据库。

第二部分内容:

开发一个Java应用,部署在位于Corporate Network的On-Premise系统里。该Java应用通过Cloud Connector访问位于SAP云平台上的HANA实例。我的前一篇公众号文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数 介绍了部署在Internet Network上的应用如何访问On-Premise系统上的服务,而本文将要介绍的场景则反其道而行之:部署在On-Premise系统上的Java应用访问Internet Network上的SAP云平台HANA数据库。

本文介绍的Java应用的全部源代码在我的github上。

创建SAP云平台上的HANA数据库实例

1. 登陆SAP云平台Cockpit,创建一个新的HANA数据库实例:

323f4b139751c19f4adf6d0fb7661521.png

设置数据库ID和System User密码。这里我设置的数据库实例ID为hana01, 后面会使用到。

9fdf8304f623e952e9aba437670b1c0b.png

创建成功后,数据库实例状态变为STARTED,可以把其Development Tools的链接加到收藏夹里,后面也会用到。

6ff416f9310e16176e9f0b54032a7994.png

至此这个位于SAP云平台上的HANA数据库实例已经可用了。下一步就是开发Java程序通过JDBC访问它。

使用JDBC访问HANA数据库

将我github上的Java应用导入到Eclipse,如下图所示。

ab042e0a650a3ec798b01597ba4360f9.png

应用主要分三个文件:

● Person.java

定义了Person模型,包含id,firstName和lastName三个成员,以及对应的getter和setter方法。该类即所谓的POJO(Plain Old Java Object)。POJO这个名字用来强调它是一个普通Java对象,没有遵从任何特定的Java约定或框架(如EJB)。

● PersonDAO.java

顾名思义: DAO – Data Access Object。通过JDBC连接HANA数据库实例,创建名为T_PERSONS的数据库表,以及往表里插入数据的逻辑都写在这个DAO类里。

● PersistenceWithJDBCServlet.java

通过该Servlet实现了一个最简单的UI,用于接受用户输入并调用PersonDAO将输入发送到HANA数据库实例。

JDBC数据库DataSource实例的获取通过JNDI完成,该实例作为输入参数传入到DAO构造函数,所有接下来的JDBC操作均通过该DataSource进行。

ec14efd69c39a113a8bf591fa535b86c.png

这个DefaultDB的配置位于web.xml:

dc40348c03f44f68b37fe318f31d098f.png

将该应用部署到SAP云平台,应用名为jerryjdbc。

5abbec6fcd3a2e05593b570081db51c7.png

此时仅仅通过上图web.xml的配置,该Java应用还无法知道在SAP云平台上到底要操作哪个数据库实例。

为此我们需要将jerryjdbc这个应用同第一步创建的HANA数据库实例hana01绑定起来。该绑定通过下图的Data Source bindings页面创建:

6955bf41072d7bd03e8e23a61de28157.png

绑定成功后,即可通过Servlet UI提供的简易界面,向HANA数据库实例里插入一个Person记录 Jerry Wang。

60c961bce2097f37ef34c1a998ba9582.png

在手机上访问该数据库实例,能看到刚刚插入的Jerry Wang。

087be44bd38a4cfe6fc0f39340e354b0.png

On-Premise系统应用连接Internet Network上的数据库实例

前文介绍的Java应用和HANA数据库实例均位于SAP云平台。我的前一篇公众号文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数 介绍了部署在Internet Network上的应用如何访问Corporate Network上的服务,现在我们试着把访问方向翻转:现在我把Java应用部署在Corporate Network里,比如SAP成都研究院机房的一台服务器上,让该Java应用去连接SAP云平台上的HANA数据库实例。

同样的,这里再次需要使用到Cloud Connector。

b1dab9113abef445f2403a6e244ef999.png

配置Cloud Connector完成从On-Premise系统到Cloud的连接

在SAP云平台创建另一个HANA数据库实例,取名为jerrydemo。然后登录Cloud Connector,点击标签On-Premise to Cloud,创建一个新的Service Channel:

797eeeb0e8485dfbefbdb3e3ee9c113f.png

将新建的数据库实例jerrydemo分配到这个新建的Channel去:

7782848d8882f4215d99a626dbb59614.png

Channel创建成功后,如下图所示。注意生成的端口号32215,后续会使用。

2440c7d56ddc008f193de41440761f6b.png

修改On-Premise系统上Java Server配置,让其指向SAP云平台的数据库实例

Java应用的代码无需做任何调整,仅需更改Server配置。修改Servers文件夹下的文件connection.properties, 明细如下:

d1190a1f7d8e9da88c600d1142d951ee.png

目的就是将该Server的数据库连接指向Cloud Connector上刚刚配置好的Service Channel,通过Cloud Connector作为桥梁连接到SAP云平台上的HANA数据库。

● javax.persistence.jdbc.url

指向的localhost:32215即Cloud Connector上配置的Service Channel,我给该Channel分配的HANA数据库实例ID为jerrydemo。该url片段currentschema=SYSTEM意为接下来通过JDBC创建的数据库表会分配到SYSTEM schema下。

● javax.persistenc.jdbc.user / password

填入jerrydemo这个数据库实例的访问用户名和密码。

至此所有配置完成。

启动On-Premise系统上的localhost服务器,插入两条数据:

aafe48df762b2d5adafc039fc5fe83cc.png

打开SAP云平台上的HANA Development Tool(其链接的获得方式前文已经介绍过),从SYSTEM这个Schema下能观察到通过刚才运行在On-Premise系统上的Web应用插入的两条记录,说明从On-Premise系统写入SAP云平台数据库的尝试成功。

8f9e0e117844f343d185f50af547ca43.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值