做論壇網(wǎng)站前段用什么框架好點seo臻系統(tǒng)
?通常有兩種方式通過OData來暴露SAP HANA中的數(shù)據(jù)庫對象,一是直接使用Database Object,比如前一篇和本篇文章介紹的例子,這種方式針對于數(shù)據(jù)已經(jīng)存在于SAP HANA中,在Repository中沒有對應(yīng)的設(shè)計時對象(Design-time Object);另一種方式是通過暴露repository中的設(shè)計時對象(Design-time Object),這是推薦使用的方式,因為這種方式的優(yōu)點在于如果Design-time Object變化的話,OData服務(wù)會自動更新,如果是直接使用Database Object,?如果數(shù)據(jù)庫對象改變,OData服務(wù)需要人工維護。但為了便于說明,在本文使用的例子都是直接暴露Database Object.
1? OData命名空間?(Namespace)?定義
???????????在默認情況之下,通過OData服務(wù)生成的Schema的命名空間為項目的package的路徑與xsodata文件名的拼接,例如前一篇文章的默認命名空間為weiyy.testodata.product,如圖。
?????????我們可以利用namespace關(guān)鍵字來修改命名空間,修改原product.xsodata,內(nèi)容如下:
service?namespace?"test.namesp"{
??? "WEIYY"."PRODUCT" as "product";
}
修改之后提交并激活原來項目,
刷新原頁面就可以看到修改之后的命名空間為“test.namesp”。
2 OData中的屬性投影(Property Projection)
???????如果數(shù)據(jù)表中有多列但有時候只需要選擇其中的某幾列暴露出來,一方面可以做一個視圖,然后暴露這個視圖,另一方面可以直接使用OData中的屬性投影語法,with用來選擇屬性,without用來排除屬性。
?????????比如對于product這個table,我們只暴露其中的id,name這兩個列,修改product.osodata:
service?namespace?"test.namesp"{
??? "WEIYY"."PRODUCT" as "product" with("id","name");
}
例用without排除屬性
service?namespace?"test.namesp"{
??? "WEIYY"."PRODUCT" as "product" without ("price","desc","desc_cn");
}
3 OData中的table關(guān)聯(lián)與屬性導(dǎo)航(Navigation Properties)
?????????前面提到過,對于多表join的查詢,可以通過把查詢結(jié)果做成一個視圖來進行暴露,筆者也是比較傾向于這種方式,但是SAP HANA?中的OData服務(wù)同時提供了另外一種查詢的方式,這里也作一個說明,那就是OData中的table關(guān)聯(lián)(Associations)與屬性的導(dǎo)航。
??????我們新建一個assoc.xsodata文件:
service {
??? "WEIYY"."CATEGORY" as "CATEGORY" navigates("Product_Category" as "products");
??? "WEIYY"."PRODUCT" as "PRODUCT" ;
??? association "Product_Category" principal "CATEGORY"("id") multiplicity "1"
??? dependent "PRODUCT"("category_id") multiplicity "*";
}
說明:這里CATEGORY表記錄PRODUCT的類別信息,?association后面跟關(guān)聯(lián)名稱,principal一端指明關(guān)聯(lián)的鍵,multiplicity指明關(guān)聯(lián)的維度,dependent指關(guān)聯(lián)的另一端。Navigates指明導(dǎo)航的信息。?然后提交激活并訪問對應(yīng)的URI,
然后我們訪問CATEGORY實體,
在products這個屬性中,列出了相關(guān)聯(lián)的products的URL。
通過這個URL獲取到category_id=1對應(yīng)的product。
本篇文章只選擇一部分的OData服務(wù)定義的語法介紹,有關(guān)SAP HANA? OData中更多的服務(wù)定義語法請參考SAP HANA Develop Guide.
參考資料:
SAP Help Portal
URI Conventions (OData Version 2.0) · OData - the Best Way to REST
[本文的測試案例所使用的SAP HANA版本為SAP HANA SPS7 Revision 70.00]