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