2010-11-30 15 views
0

我有一個SpringServlet(來自Jersey),它正在以一種非常基本的方式公開我的JPA註釋的POJO。例如,我不是返回對象的實際表示,而是返回了名稱等字段。我應該怎樣做才能序列化/封送(反之亦然)引用其他資源的資源?

當然,我想返回對象的實際表示形式作爲資源...我卡住的部分是,如果我有一個Foo類型的對象可以通過/ foo/{id}//但它也可以訪問與作爲Foo的一部分的對象類型Bar有關係 - 我不想在響應中序列化Bar。我想要返回一個URI到一個Bar資源。

我是否在這裏從我自己 - 沒有框架處理那部分?特別是關於路徑。感覺就像我將不得不創建用@Path註釋的BarResource,但是在序列化期間,還要從常量中讀取Bar POJO引用的URI。我無法獲取類型並查找資源(以及隨後的@Path註釋),但這很方便,不是嗎?

回答

0

直到您清除資源,表示和對象之間的區別之前,您註定會一直困惑不解。

資源是對客戶端應用程序有用的概念或某種「事物」。它非常模糊。它由URI標識,並使用方法進行操作。它需要模糊/靈活,以彌補非常有限的一套方法。

表示法是一組字節,可以通過代表資源的線路在某個瞬間傳輸。

對象是一個實現細節,它可能與資源有直接的關聯關係,也可能不直接關聯。包含在資源中的信息可以通過單個對象或整個對象圖來實現。資源的內容可以存儲在文件中,SQL查詢的結果,XSLT轉換,幾乎任何東西。

您可能或很多不使用對象序列化來創建資源的表示形式。對象之間的引用可能涉及單個資源內的內容或資源之間的鏈接。但是,要非常小心地將域對象序列化爲表示形式。這肯定會引起你的客戶端和服務器之間的耦合程度,你會後悔的。

相關問題