使用JDBC操作SAP雲平臺上的HANA資料庫

i042416發表於2018-05-18

本文假設您對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資料庫例項:


    使用JDBC操作SAP雲平臺上的HANA資料庫

設定資料庫ID和System user的密碼。這裡我設定的資料庫ID為hana01, 後面會使用到。

使用JDBC操作SAP雲平臺上的HANA資料庫

建立成功後,資料庫例項狀態變為STARTED,可以把其Development Tools的連結加到收藏夾裡,後面也會用到。


使用JDBC操作SAP雲平臺上的HANA資料庫

至此這個位於SAP雲平臺上的HANA資料庫例項已經可用了。下一步就是開發Java程式通過JDBC訪問它。

使用JDBC訪問HANA資料庫

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

應用主要分三個檔案:

使用JDBC操作SAP雲平臺上的HANA資料庫
  • 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進行。

使用JDBC操作SAP雲平臺上的HANA資料庫

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


使用JDBC操作SAP雲平臺上的HANA資料庫

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

使用JDBC操作SAP雲平臺上的HANA資料庫

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


使用JDBC操作SAP雲平臺上的HANA資料庫

繫結成功後,即可通過Servlet UI提供的簡易介面,向HANA資料庫例項裡插入一個Person記錄 Jerry Wang。


使用JDBC操作SAP雲平臺上的HANA資料庫

在手機上訪問該資料庫例項,能看到剛剛插入的Jerry Wang。
使用JDBC操作SAP雲平臺上的HANA資料庫

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。

使用JDBC操作SAP雲平臺上的HANA資料庫

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

在SAP雲平臺建立另一個HANA資料庫例項,取名為jerrydemo。然後登入Cloud Connector,點選標籤On-Premise to Cloud,建立一個新的Service Channels:


使用JDBC操作SAP雲平臺上的HANA資料庫

將新建的資料庫例項jerrydemo分配到這個新建的Channel去:


使用JDBC操作SAP雲平臺上的HANA資料庫

建立成功如下圖。注意生成的埠號32215,後續會使用。

使用JDBC操作SAP雲平臺上的HANA資料庫

修改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這個資料庫例項的訪問使用者名稱和密碼。

使用JDBC操作SAP雲平臺上的HANA資料庫

至此所有配置完成。
啟動On-Premise系統上的localhost伺服器,插入兩條資料:


使用JDBC操作SAP雲平臺上的HANA資料庫

開啟SAP雲平臺上的HANA Development Tool連線,從SYSTEM這個Schema下能觀察到通過剛才執行在On-Premise系統上的Web應用插入的兩條記錄,說明從On-Premise系統寫入SAP雲平臺資料庫的嘗試成功。

使用JDBC操作SAP雲平臺上的HANA資料庫

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

使用JDBC操作SAP雲平臺上的HANA資料庫
使用JDBC操作SAP雲平臺上的HANA資料庫

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2154716/,如需轉載,請註明出處,否則將追究法律責任。

相關文章