使用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上的應用如何訪問Corporate Network內的On-Premise系統上的服務,而本文將要介紹的場景則反其道而行之:部署在On-Premise上的Java應用訪問Internet Network上的SAP雲平台的HANA數據庫。

本文介紹的Java應用的全部源代碼在我的github上:

創建SAP雲平台上的HANA數據庫實例

  1. 登陸SAP雲平台Cockpit,創建一個新的HANA數據庫實例:

設置數據庫ID和System user的密碼。這里我設置的數據庫ID為hana01, 后面會使用到。

創建成功后,數據庫實例狀態變為STARTED,可以把其Development Tools的鏈接加到收藏夾里,后面也會用到。

至此這個位於SAP雲平台上的HANA數據庫實例已經可用了。下一步就是開發Java程序通過JDBC訪問它。

使用JDBC訪問HANA數據庫

將我github上的Java應用import到Eclipse,如下圖所示:

應用主要分三個文件:

  • 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進行。


這個DefaultDB的配置位於web.xml:

將該應用部署到SAP雲平台,應用名為jerryjdbc。

此時僅僅通過上圖web.xml的配置,Java應用還無法知道在SAP雲平台上到底要操作哪個數據庫實例。
為此我們需要將jerryjdbc這個應用同第一步創建的HANA數據庫實例hana01綁定起來。該綁定通過下圖的Data Source bingdings頁面創建:

綁定成功后,即可通過Servlet UI提供的簡易界面,向HANA數據庫實例里插入一個Person記錄 Jerry Wang。

在手機上訪問該數據庫實例,能看到剛剛插入的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。

配置Cloud Connector完成從On-Premise系統到Cloud的連接

在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的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM