मैंने हाल ही में एक जावा परियोजना के लिए दृढ़ता और मूल्यांकन का मूल्यांकन किया है और मेरे निष्कर्ष इस प्रकार हैं:
मैं यह देख रहा हूं कि जेडीओ के पक्ष में समर्थन मुख्य रूप से है:
- आप गैर-sql डेटा स्रोत, db4o, hbase, ldap, bigtable, couchdb (कैसेंड्रा के लिए प्लग इन) आदि का उपयोग कर सकते हैं।
- आप आसानी से एक sql से गैर-sql डेटा स्रोत पर जा सकते हैं और इसके विपरीत।
- कोई प्रॉक्सी ऑब्जेक्ट और इसलिए हैशकोड () और बराबर () कार्यान्वयन के संबंध में कम दर्द
- अधिक POJO और इसलिए कम वर्कअराउंड की आवश्यकता है
- अधिक संबंध और क्षेत्र प्रकारों का समर्थन करता है
और जेपीए के पक्ष में समर्थन मुख्य रूप से है:
- अधिक लोकप्रिय
- jdo मर चुका है
- bytecode वृद्धि का उपयोग नहीं करता है
मैं JPA डेवलपर्स के बहुत से समर्थक JPA पोस्ट देख रहा हूं जिन्होंने स्पष्ट रूप से JDO / Datanucleus का उपयोग नहीं किया है जो JDO का उपयोग नहीं करने के लिए कमजोर तर्क प्रस्तुत करते हैं।
मैं जेडीओ के बहुत से पोस्ट भी देख रहा हूं, जो जेडीओ में चले गए हैं और परिणामस्वरूप बहुत खुश हैं।
JPA के अधिक लोकप्रिय होने के संबंध में, ऐसा लगता है कि यह तकनीकी रूप से श्रेष्ठ होने के बजाय RDBMS विक्रेता समर्थन के कारण भाग में है। (मेरे लिए वीएचएस / बेटामैक्स की तरह लगता है)।
JDO और इसका संदर्भ कार्यान्वयन Datanucleus स्पष्ट रूप से मृत नहीं है, जैसा कि GAE के लिए Google द्वारा इसे अपनाने और स्रोत-कोड (http://sourceforge.net/projects/datanucleus/) पर सक्रिय विकास द्वारा दिखाया गया है।
मैंने जेडीओ के बारे में बहुत सारी शिकायतें बायटेककोड बढ़ाने के कारण देखी हैं, लेकिन यह अभी तक कोई स्पष्टीकरण नहीं है कि यह खराब क्यों है।
वास्तव में, ऐसी दुनिया जो NoSQL समाधानों के प्रति अधिक से अधिक जुनूनी हो रही है, JDO (और डेटान्यूक्लियस कार्यान्वयन) एक अधिक सुरक्षित शर्त लगती है।
मैंने अभी JDO / Datanucleus का उपयोग शुरू किया है और इसे स्थापित किया है ताकि मैं db4o और mysql का उपयोग करने के बीच आसानी से स्विच कर सकूं। यह तेजी से विकास के लिए db4o का उपयोग करने के लिए सहायक है और डीबी स्कीमा के बारे में बहुत अधिक चिंता करने की ज़रूरत नहीं है और फिर, जब एक डेटाबेस को तैनात करने के लिए स्कीमा को स्थिर किया जाता है। मुझे यह भी विश्वास है कि बाद में, मैं अपने आवेदन के सभी / भाग को जीएई में तैनात कर सकता था या वितरित भंडारण / मानचित्र-लाभ को कम कर सकता था, एक बहुत कम प्रतिक्षेप के बिना एक ला हबेस / हडूप / कैसेंड्रा को कम कर सकता था।
मैंने डाटैन्यूक्लियस के साथ शुरुआत करने की प्रारंभिक बाधा को थोड़ा मुश्किल पाया - डाटैन्यूक्लियस वेबसाइट पर प्रलेखन थोड़ा मुश्किल है - ट्यूटोरियल आसानी से अनुसरण नहीं कर सकता है जैसा कि मैंने पसंद किया होगा। यह कहने के बाद कि शुरुआती लर्निंग कर्व को पार करने के बाद एपीआई और मैपिंग पर अधिक विस्तृत प्रलेखन बहुत अच्छा है।
जवाब है, यह निर्भर करता है कि आप क्या चाहते हैं। मैं इसके बजाय क्लीनर कोड, कोई-विक्रेता-लॉक-इन, अधिक पूजो-उन्मुख, नोसक्ल विकल्प छंद अधिक लोकप्रिय होगा।
यदि आप चाहते हैं कि गर्म उधम मचाते हुए कि आप अन्य डेवलपर्स / भेड़ के बहुमत के रूप में कर रहे हैं, तो JPA / हाइबरनेट चुनें। यदि आप अपने क्षेत्र में नेतृत्व करना चाहते हैं, तो JDO / Datanucleus को ड्राइव करें और अपना खुद का दिमाग बनाएं।