जावा बाध्यकारी बनाम कक्षाओं को मैन्युअल रूप से परिभाषित करना

मेरे पास एक एक्सएमएल स्कीमा है जिसके लिए मुझे जावा क्लासेस बनाने की आवश्यकता होगी। यह एक विशेष रूप से बड़ी स्कीमा नहीं है, मैं कहूंगा कि इसका परिणाम लगभग 20 वर्गों में होगा। मैं वजन घटाने का प्रयास कर रहा हूं कि एक स्वचालित बाध्यकारी प्रोग्राम (जैसे जेएक्सबी या जीबीएक्स में आपूर्ति की गई) का उपयोग करना है या क्या मैन्युअल रूप से अपनी कक्षाएं लिखना है और एक्सस्ट्रीम जैसे मार्शलिंग/अनमारशलिंग के लिए कुछ उपयोग करना है।

बाध्यकारी कार्यक्रम का उपयोग करने के विरोध में अपने स्वयं के वर्ग लिखने के फायदे/नुकसान क्या हैं।

इसके अलावा, मैं एक बाध्यकारी कार्यक्रम का उपयोग करता हूं, क्या मैं हमेशा इसके लिए बंधे हूं। उदाहरण के लिए, यदि मैं कक्षाएं बनाने के लिए जेएक्सबी के बाध्यकारी कंपाइलर का उपयोग करता हूं, तो क्या मुझे सभी मार्शलिंग/अनारशलिंग के लिए जेएक्सबी का उपयोग करना होगा?

p.s. I've seen the following questions about xml binding/serialization, which were useful, but didn't answer my question totally: xml-serialization-in-java and java-xml-binding

0

1 उत्तर

मुझे नहीं लगता कि आपके प्रश्न का एक निश्चित उत्तर है। लेकिन मैं आपको कुछ कठिन जीत सलाह दे सकता हूं। यहां कुछ बातें विचार करने के लिए हैं:

  1. यह समय-समय पर मार्शलिंग और अनारहॉलिंग कोड लिखने में समय लगता है, खासकर पहली बार।

  2. आपको अपनी डीओएम लाइब्रेरी (जेरिस या उसके समकक्ष) की बारीकियों को सीखने में काफी समय व्यतीत करना होगा।

  3. बहुत सारे नकल हैं इसलिए आपको अंततः कुछ सहायक कक्षाएं लिखने के लिए प्रेरित किया जाएगा।

  4. आपको यह सुनिश्चित करने के लिए कई यूनिट परीक्षणों की आवश्यकता होगी कि आपने अपने सभी अड्डों को वैकल्पिक तत्वों और विशेषताओं के क्षेत्र में शामिल किया है।

उस सूची को देखते हुए यह कहना बहुत आसान है "जेएक्सबी मेरे लिए क्या करता है"। इसके लिए कई सालों से ऐसा करने के बाद मैं कहूंगा कि जेएक्सबी आपको काफी समय और प्रयास बचाता है, खासकर जावा 5/6 में जेएक्सबी का नवीनतम पुनरावृत्ति।

लेकिन यदि आप जेएक्सबी के साथ जाते हैं तो एक सबक है जिसे हमने कठिन तरीके से सीखा है जिसे मैं पास करना चाहता हूं:

*** जेएक्सबी जेनरेटेड क्लास को अपने आवेदन में रिसाव न करने दें।

जैसा कि आपने अपने प्रश्न में कहा था, यह आपके पूरे एप्लिकेशन को जेएक्सबी की बात करने के तरीके से जोड़ता है। यदि जेएक्सबी को प्रतिस्थापित करना है (भविष्य में आप ऐसा क्यों कर सकते हैं) तो आपको एक चुनौतीपूर्ण और दर्दनाक कार्य का सामना करना पड़ेगा (मेरा विश्वास करो, हमने इसे किया है और हम उसमें कभी नहीं पहुंचेंगे फिर से स्थिति)।

अब हम हमेशा अपने जेएक्सबी जेनरेटेड क्लासेस को एक मुखौटा या कारखाने के पीछे छिपाते हैं, जेएक्सबी कक्षाओं से अपने डोमेन पीओजेओ में मैपिंग करते हैं जिसमें आवश्यक व्यवहार होता है। हम जेएक्सबी के बारे में सोचते हैं क्योंकि हम जेडीबीसी करते हैं; जेएक्सबी सिर्फ एक और डेटा स्रोत है, हमारे डोमेन POJO से डेटा प्राप्त करने का एक और तरीका है। डोमेन पीओजेओ गुप्त सॉस हैं और हम नियंत्रित करते हैं कि उन्हें कैसे कोड किया जाता है और उनका उपयोग कैसे किया जाता है। जेएक्सबी मार्शलिंग और अनमर्शलिंग के लिए सिर्फ एक उपकरण है।

0
जोड़ा
"यह समय-समय पर मार्शलिंग और अनैमरलिंग कोड लिखने में समय लगता है, खासकर पहली बार।" - सच है, और मैं अनुशासनिक जोड़ूंगा "आप इसे कम से कम एक बार गलत कर देंगे।"
जोड़ा लेखक Marcus Downing, स्रोत