2012-10-17 88 views

回答

6

最終它取決於要重點:

如果XML Schema是最重要的事情

那麼最好從XML模式開始並生成JAXB模型。有跡象表明,一個JAXB(JSR-222)實現只是不能生成XML模式的細節:

  • 甲maxOccurs的大於0,1,或無界
  • 許多方面其它上的簡單類型
  • 模型組

如果對象模型是最重要的事情

如果你將要使用的Java模型不僅僅是convertin更多g之間的對象和XML(即使用它與JPA進行持久化),那麼我會建議從Java對象開始。這會給你最大的控制。

+0

我們使用JAXB將數據傳入REST Web服務和從REST Web服務傳輸數據。有時我們可能已經有了可用於生成XSD的bean/DTO。有時我們會從頭開始創建這些bean。我的猜測是我們的對象模型在這些情況下是最重要的,你同意嗎? XSD將只用於創建用於傳輸數據的對象。 – medloh

1

這取決於您的要求和方案的啓動點。

考慮您的要求,請使用generate Java files from an XSD只要你想定義輸出(XML)格式首先應當由Java的。支持,

1

由於XML的要點之一是爲便攜式數據 - 傳輸格式,無論平臺或語言如何,都可以使用,我會避免從任何特定的編程語言生成XSD,作爲經驗法則。如果你知道你只是在Java端點之間進行通信,這可能並不重要(但是你確定這將永遠是永遠?)。

用編程語言中立的方式定義接口/模式比其他方式更好。

有很多例外的這一總原則,特別是如果你使用現有的或遺留代碼整合...

+2

對於由JAXB(JSR-222)實現生成的XML架構沒有任何特定的Java。 –

+0

(我希望不是) – jahroy

+2

好。但是,根據我的經驗,如果從一種編程語言開始,而不是從XSD開始,由於語言的不同風格和特性,人們通常會以完全不同的模式結束。從模式編輯器開始,也往往會產生不同的設計(比較好的因素,但可讀性較差),比起以示例XML開始,然後從中反向設計模式。 – DNA

1

如果你要設計兩個POJO和模式的機會,這是設計的問題 - 做你爲「完美」模式或「完美」java類設計。

在某些情況下,您沒有選擇餘地,在系統集成的情況下,您可能會從另一個系統獲得預定義的XSD,然後您需要適應XSD - > Class將是唯一的辦法。