本文假设您对JDBC(Java Database Connectivity)有最基本的了解。您也能够将其同ADBC(ABAP Database Connectivity)作对比,细节请参考个人博客ADBC and JDBCjava
这篇文章分为两部分,第一部份内容:git
第二部份内容:github
开发一个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数据库。web
本文介绍的Java应用的所有源代码在个人github上:数据库
设置数据库ID和System user的密码。这里我设置的数据库ID为hana01, 后面会使用到。服务器
建立成功后,数据库实例状态变为STARTED,能够把其Development Tools的连接加到收藏夹里,后面也会用到。 至此这个位于SAP云平台上的HANA数据库实例已经可用了。下一步就是开发Java程序经过JDBC访问它。框架
将我github上的Java应用import到Eclipse,以下图所示:函数
应用主要分三个文件:url
Person.java 定义了Person模型,只包含id,firstName和lastName三个成员,以及对应的getter和setter方法,即所谓的POJO(Plain Old Java Object )。POJO这个名字用来强调它是一个普通Java对象,没有听从任何特定的Java约定或框架(如EJB)。orm
PersonDAO.java 顾名思义: DAO - Data Access Object。经过JDBC链接HANA数据库实例,建立名为T_PERSONS的数据库表,已经往表里插入数据的逻辑都写在这个DAO类里。
PersistenceWithJDBCServlet.java 一个简单的经过Servlet实现的UI,用于接受用户输入并调用PersonDAO将输入发送到HANA数据库实例。
JDBC数据库DataSource实例的获取经过JNDI完成,该实例做为输入参数传入到DAO构造函数,全部接下来的JDBC操做均经过该DataSource进行。
这个DefaultDB的配置位于web.xml:
将该应用部署到SAP云平台,应用名为jerryjdbc。
此时仅仅经过上图web.xml的配置,Java应用还没法知道在SAP云平台上到底要操做哪一个数据库实例。 为此咱们须要将jerryjdbc这个应用同第一步建立的HANA数据库实例hana01绑定起来。该绑定经过下图的Data Source bingdings页面建立: 绑定成功后,便可经过Servlet UI提供的简易界面,向HANA数据库实例里插入一个Person记录 Jerry Wang。
在手机上访问该数据库实例,能看到刚刚插入的Jerry Wang。
前文介绍的Java应用和HANA数据库实例均位于SAP云平台。个人前一篇公众号文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数 介绍了部署在Internet Network上的应用如何访问Corporate Network上的服务,如今咱们试着把访问方向翻转:如今我把Java应用部署在Corporate Network里,好比SAP成都研究院机房的一台服务器上,让该Java应用去链接SAP云平台上的HANA数据库实例。 一样的,这里再次须要使用到Cloud Connector。
在SAP云平台建立另外一个HANA数据库实例,取名为jerrydemo。而后登陆Cloud Connector,点击标签On-Premise to Cloud,建立一个新的Service Channels: 将新建的数据库实例jerrydemo分配到这个新建的Channel去:
建立成功以下图。注意生成的端口号32215,后续会使用。
修改On-Premise系统上Java server的配置,让其指向SAP云平台的数据库实例 Java应用的代码无需作任何调整,仅需更改Server配置。修改Servers文件夹下的文件connection.properties, 明细以下,目的就是将该Server的数据库链接指向Cloud Connector上刚刚配置的Service Channel,经过Cloud Connector做为桥梁链接到SAP云平台上的HANA数据库。
javax.persistence.jdbc.url: 指向的localhost:32215即Cloud Connector上配置的Service Channel,该Channel我分配的HANA数据库实例的ID为jerrydemo。currentschema=SYSTEM,意为接下来我经过JDBC建立的数据库表会分配到SYSTEM schema下。 javax.persistenc.jdbc.user / password: 填入jerrydemo这个数据库实例的访问用户名和密码。
至此全部配置完成。 启动On-Premise系统上的localhost服务器,插入两条数据:
打开SAP云平台上的HANA Development Tool链接,从SYSTEM这个Schema下能观察到经过刚才运行在On-Premise系统上的Web应用插入的两条记录,说明从On-Premise系统写入SAP云平台数据库的尝试成功。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码: