服務數據對象是一種流動數據
服務數據對象(Service Data Object,SDO)介于強類型POJO和非驗證XML流中間。SDO使用戶應用程序能夠使用可動態創建的數據結構。當數據必須在沒有(或不能)共享相同的嚴格類型定義的環境(例如編譯后的POJO類集合)中傳播時,SDO這種靈活的動態數據結構就顯得尤為重要?梢詫⑺鼈儽茸黛o態(POJO)和動態(SDO)――由于這種比喻――很明顯,SDO是SOA的重要組成部分。這就是為什么所有企業的IT部門內都存在不同形式的‘動態數據結構’主題。懷疑論者會說:這不就是名稱值對嗎?但是SDO遠遠超越了所謂的名稱值對。例如,該規范認為數據(例如人員)是通過各種關系而富有意義,并解釋了DataGraph的概念。還詳細說明了如何通過ChangeSummary跟蹤DataGraph的變化。更多詳細內容請參閱 參考資料 部分。
使用JPA持久性存儲SDO
SDO是關于動態數據的高級規范。但是不具備持久性的數據是什么樣的呢?我們如何將SDO DataGraph存儲到數據庫中,以及如何從數據庫中檢索它呢?最初的SDO規范(2004年11月發布)提到了Data Mediator Service但是沒有給出其定義。最近再次查閱規范時,規范已經發展到了2.1版本,并且持久存儲服務現在被稱為數據訪問服務,即DAS,但是仍然沒有詳細說明其細節。
在同一時期內,Java Persistence Architecture (JPA)已發展成熟,而且一些領先的應用程序服務供應商采用它作為其持久性提供者。BEA使用了Kodo,JBoss使用Hibernate,而OracleAS和GlassFish使用了Toplink。OpenJPA――Kodo的開源版本――很可能用于Geronimo和Websphere環境。自然,JPA是為SDO提供持久性存儲服務的重要備選方案。
在Google中快速搜索一下“JPA”、“SDO”和“JPA+SDO”,分別返回397萬、342萬和16萬的命中率。事實上,這些反應SDO和JPA討論次數的數字可轉換成左側的圖表。
我研究的第一個項目是Tuscany DAS。我大致查看了其中 可用 的內容,但是似乎沒有使用JPA,至少目前是這樣。有關論壇一直在 討論 JPA的使用,但是其結果尚未報道出來。
下一個項目是 ALDSP。這是來自BEA的較成熟的產品,它使用的是SDO。然而,ALDSP也沒有使用基于JPA的持久性服務。
Eclipse EMF是首先具體實現SDO的項目之一。然而,EMF也沒有實現持久性服務(SDO規范并沒有向其授權)。
為什么JPA是持久性存儲SDO的自然選擇?
JPA解決了O-R映射中最棘手的問題,不過需要注意一些 警告 標志。它還為持久性存儲提供了一個簡單的、設計良好的API,這個API通過實現EJB 3.0很好地證明了自己。除了已經證實的完善性,JPA逐漸成為為SDO提供持久性服務的自然選擇,這是因為JPA還具有大量能與SDO良好結合的特性。
文章來源于領測軟件測試網 http://www.kjueaiud.com/