2011-01-25 29 views
3

我正在使用JAXB,JPA和REST風格的Web服務混合傳遞對象。我的域對象包含JPA和JAXB註釋的組合,並且我能夠使用Spring的RestTemplate以最少量的代碼成功解組我的域對象。我記得不久前讀過一些東西(可能是SO的答案,可能是博客),作者認爲他不會依賴生產環境中的註釋,但總是根據模式進行編組和解組。這仍然是必要的做法嗎?將XSD編組對象傳遞給線時,XSD是否被認爲是良好的做法?

如果我在兩個項目(例如生成的RESTful Web服務和消費客戶端)中添加了帶註釋Bean的依賴項的.jar,是否不會有效地添加另一組需要維護的數據?在使用帶註釋的JAXB POJO時,何時需要模式以及它們提供了哪些好處?

+1

這不是真的java或JAXB特定的,這是使用XML-over-HTTP應用程序的最佳實踐的更一般問題。 – skaffman 2011-01-25 13:53:12

回答

1

JAXB將其元數據表示爲註釋,因此根據XML模式確實沒有元帥/反編組。

我領導的的JAXB組件(MOXy),這是最好的知道它的JPA implementation。我對開發人員的建議是在他們的模型上使用JAXB & JPA批註的組合。 XML架構的

用途:

  • 作爲mentioned by biziclop JAXB可以在編組/解組操作充分利用XML Schema來執行驗證。
  • XML架構還爲您的RESTful服務的客戶端提供了一種方法,以瞭解預期的XML消息的外觀。作爲mentioned by Fabian Steeg,您可以通過將模式創建爲構建的一部分來使模式更容易維護。
1

在開發和測試環境中,模式驗證可能非常有用(例如,檢測代碼的不同版本),在生產中最好關閉它。除非您與其他人進行通信的系統由其他人開發,否則在這種情況下,XSD驗證可以幫助快速高效地將責任轉移。

1

只要服務的所有用戶都是Java客戶端,我同意它不會給你帶來太多,只會增加額外的維護工作量。但是,如果您計劃使用非Java客戶端,則生成XSD(可能作爲自動構建的一部分,這可以最大限度地減少維護開銷)。

相關問題