使用JDBC操做SAP雲平臺上的HANA數據庫

本文假設您對JDBC(Java Database Connectivity)有最基本的瞭解。您也能夠將其同ADBC(ABAP Database Connectivity)作對比,細節請參考個人博客ADBC and JDBCjava

這篇文章分爲兩部分,第一部份內容:git

  1. 介紹如何在SAP Cloud Platform(雲平臺)上建立一個HANA數據庫實例
  2. 開發一個Java應用,部署到SAP雲平臺上。該Java應用使用JDBC操做一樣處於SAP雲平臺上的HANA數據庫。

第二部份內容: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上:數據庫

建立SAP雲平臺上的HANA數據庫實例

  1. 登錄SAP雲平臺Cockpit,建立一個新的HANA數據庫實例:

設置數據庫ID和System user的密碼。這裏我設置的數據庫ID爲hana01, 後面會使用到。服務器

建立成功後,數據庫實例狀態變爲STARTED,能夠把其Development Tools的連接加到收藏夾裏,後面也會用到。 至此這個位於SAP雲平臺上的HANA數據庫實例已經可用了。下一步就是開發Java程序經過JDBC訪問它。框架

使用JDBC訪問HANA數據庫

將我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。

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

相關文章
相關標籤/搜索