2012-10-17 23 views
7

मुझे पता है कि, जेएक्सबी का उपयोग करके, आप generate Java files from an XSD कर सकते हैं और आप generate the XSD from annotated POJOs भी कर सकते हैं। हर एक के फायदे और नुकसान क्या हैं? क्या एक दूसरे की तुलना में बेहतर है?जावा से एक्सएसडी या एक्सएसडी से जावा

हम मूल रूप से एक्सएमएल प्रारूप में लॉग में ईवेंट को क्रमबद्ध करना चाहते हैं।

उत्तर

6

अंततः यह है जहाँ आप ध्यान केंद्रित करना चाहते पर निर्भर करता है। वहाँ एक XML स्कीमा का विवरण है कि एक JAXB (JSR-222) कार्यान्वयन बस उत्पन्न नहीं कर सकते हैं:

  • एक maxOccurs एक सरल प्रकार पर 0, 1, या असीम
  • सारे पहलुओं के अलावा अन्य
  • मॉडल समूहों

ऑब्जेक्ट मॉडल सबसे महत्वपूर्ण बात

है, तो आप सिर्फ convertin से अधिक के लिए जावा मॉडल का उपयोग किया जाएगा वस्तुओं और एक्सएमएल के बीच जी (यानी। दृढ़ता के लिए जेपीए के साथ इसका उपयोग करना) तो मैं जावा ऑब्जेक्ट्स से शुरू करने की सलाह दूंगा। यह आपको सबसे बड़ा नियंत्रण देगा।

+0

हम आरईएसटी वेब सेवाओं से डेटा स्थानांतरित करने के लिए जेएक्सबी का उपयोग कर रहे हैं। कभी-कभी हमारे पास पहले से ही बीन्स/डीटीओ उपलब्ध हो सकते हैं जिन्हें हम एक्सएसडी उत्पन्न करने के लिए उपयोग कर सकते हैं। कभी-कभी हम खरोंच से शुरू करेंगे और इन बीन्स बनायेंगे। मेरा अनुमान है कि इन मामलों में हमारा ऑब्जेक्ट मॉडल सबसे महत्वपूर्ण बात है, क्या आप सहमत हैं? डेटा स्थानांतरित करने के लिए ऑब्जेक्ट बनाने में एक कदम से अधिक के लिए XSD का उपयोग नहीं किया जाएगा। – medloh

1

यह आरंभिक बिंदु के संबंध में आपकी आवश्यकता और परिदृश्य पर निर्भर करता है।

आपकी आवश्यकता को देखते हुए, generate Java files from an XSD का उपयोग के रूप में आप उत्पादन (XML) प्रारूप पहले से जावा। समर्थन किया जाना चाहिए जो निर्धारित करना चाहते हैं,

1

को देखते हुए एक्सएमएल के मुख्य बिंदुओं में से एक एक पोर्टेबल डेटा- हो रहा है कि हस्तांतरण प्रारूप, मंच या भाषा के बावजूद प्रयोग योग्य, मैं अंगूठे के नियम के रूप में, किसी भी विशिष्ट प्रोग्रामिंग भाषा से एक्सएसडी उत्पन्न करने से बचूंगा। इससे कोई फर्क नहीं पड़ता कि आप जानते हैं कि आप केवल जावा एंडपॉइंट्स के बीच संचार कर रहे हैं (लेकिन क्या आपको यकीन है कि यह सच होगा हमेशा?)।

प्रोग्रामिंग-भाषा तटस्थ तरीके से इंटरफेस/स्कीमा को परिभाषित करने के लिए यह सब बेहतर है, यह सब बेहतर है।

अपवाद के बहुत सारे, इस सामान्य सिद्धांत के लिए कर रहे हैं विशेष रूप से अगर आप मौजूदा या विरासत कोड के साथ एकीकृत कर रहे हैं ...

+2

जेएक्सबी (जेएसआर -222) कार्यान्वयन द्वारा उत्पन्न एक्सएमएल स्कीमा के बारे में जावा विशिष्ट नहीं है। –

+0

(मुझे आशा नहीं होगी) – jahroy

+2

अच्छा। हालांकि, यह मेरा अनुभव है कि यदि कोई प्रोग्रामिंग भाषा से शुरू होता है, तो कोई भी अलग-अलग शैलियों और भाषाओं की विशेषताओं के कारण एक्सएसडी से शुरू होता है। एक स्कीमा एडिटर से शुरू करने से भी अलग-अलग डिज़ाइन (बेहतर फैक्टर, लेकिन कम पठनीय) उत्पन्न होते हैं, यदि कोई उदाहरण एक्सएमएल के साथ शुरू होता है तो रिवर्स-इंजीनियरों से एक स्कीमा होता है। – DNA

1

तुम दोनों POJO और स्कीमा डिज़ाइन करने का अवसर है, तो यह डिजाइन की बात है - करते आप एक "सही" स्कीमा या "परिपूर्ण" जावा क्लास के लिए डिज़ाइन करते हैं।

कुछ मामलों में, आपके पास सिस्टम एकीकरण परिदृश्यों में एक विकल्प की लक्जरी नहीं है, आपको एक अन्य सिस्टम से पूर्वनिर्धारित एक्सएसडी दिया जा सकता है जिसे आपको अनुकूलित करने की आवश्यकता है, फिर एक्सएसडी -> कक्षा केवल एकमात्र होगी मार्ग। XML स्कीमा सबसे महत्वपूर्ण बात

तो यह सबसे अच्छा XML स्कीमा से शुरू करने और एक JAXB मॉडल उत्पन्न करने के लिए है

हैं: