本文假设您对JDBC(Java Database Connectivity)有最基本的了解。您也可以将其同ADBC(ABAP Database Connectivity)做对比,细节请参考我的博客ADBC and JDBC 这篇文章分为两部分,第一部分内容:
第二部分内容: 开发一个Java应用,部署在位于Corporate Network的On-Premise系统里。该Java应用通过Cloud Connector访问位于SAP云平台上的HANA实例。我的前一篇公众号文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数 介绍了部署在Internet Network上的应用如何访问Corporate Network内的On-Premise系统上的服务,而本文将要介绍的场景则反其道而行之:部署在On-Premise上的Java应用访问Internet Network上的SAP云平台的HANA数据库。 本文介绍的Java应用的全部源代码在我的github上: 创建SAP云平台上的HANA数据库实例
设置数据库ID和System user的密码。这里我设置的数据库ID为hana01, 后面会使用到。 创建成功后,数据库实例状态变为STARTED,可以把其Development Tools的链接加到收藏夹里,后面也会用到。 至此这个位于SAP云平台上的HANA数据库实例已经可用了。下一步就是开发Java程序通过JDBC访问它。 使用JDBC访问HANA数据库将我github上的Java应用import到Eclipse,如下图所示: 应用主要分三个文件:
JDBC数据库DataSource实例的获取通过JNDI完成,该实例作为输入参数传入到DAO构造函数,所有接下来的JDBC操作均通过该DataSource进行。 这个DefaultDB的配置位于web.xml: 将该应用部署到SAP云平台,应用名为jerryjdbc。 此时仅仅通过上图web.xml的配置,Java应用还无法知道在SAP云平台上到底要操作哪个数据库实例。 绑定成功后,即可通过Servlet UI提供的简易界面,向HANA数据库实例里插入一个Person记录 Jerry Wang。
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完成从On-Premise系统到Cloud的连接在SAP云平台创建另一个HANA数据库实例,取名为jerrydemo。然后登录Cloud Connector,点击标签On-Premise to Cloud,创建一个新的Service Channels: 将新建的数据库实例jerrydemo分配到这个新建的Channel去: 创建成功如下图。注意生成的端口号32215,后续会使用。 修改On-Premise系统上Java server的配置,让其指向SAP云平台的数据库实例 javax.persistence.jdbc.url: 指向的localhost:32215即Cloud Connector上配置的Service Channel,该Channel我分配的HANA数据库实例的ID为jerrydemo。currentschema=SYSTEM,意为接下来我通过JDBC创建的数据库表会分配到SYSTEM schema下。 至此所有配置完成。 打开SAP云平台上的HANA Development Tool连接,从SYSTEM这个Schema下能观察到通过刚才运行在On-Premise系统上的Web应用插入的两条记录,说明从On-Premise系统写入SAP云平台数据库的尝试成功。 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙" |
|