मैं java का उपयोग करके DO को DTO में बदलने की कोशिश कर रहा हूं और अपना स्वयं का लेखन शुरू करने से पहले स्वचालित टूल की तलाश कर रहा हूं। मैं बस यह जानना चाहता था कि क्या कोई मुफ्त टूल उपलब्ध है या नहीं।
मैं java का उपयोग करके DO को DTO में बदलने की कोशिश कर रहा हूं और अपना स्वयं का लेखन शुरू करने से पहले स्वचालित टूल की तलाश कर रहा हूं। मैं बस यह जानना चाहता था कि क्या कोई मुफ्त टूल उपलब्ध है या नहीं।
जवाबों:
आप डोजर की कोशिश कर सकते हैं ।
डॉजर एक जावा बीन से जावा बीन मैपर है जो डेटा को एक वस्तु से दूसरी वस्तु में पुन: कॉपी करता है। आमतौर पर, ये जावा बीन्स विभिन्न प्रकार के होंगे।
डोजर सरल संपत्ति मानचित्रण, जटिल प्रकार के मानचित्रण, द्वि-दिशात्मक मानचित्रण, अंतर्निहित-स्पष्ट मानचित्रण, साथ ही पुनरावर्ती मानचित्रण का समर्थन करता है। इसमें मानचित्रण संग्रह विशेषताएँ शामिल हैं जिन्हें तत्व स्तर पर मानचित्रण की भी आवश्यकता होती है।
वहाँ कुछ पुस्तकालय हैं:
कॉमन्स- बीन्यूटिल्स: कन्वर्टयूटिल्स -> स्ट्रिंग स्केलर मानों को निर्दिष्ट वर्ग की वस्तुओं में परिवर्तित करने के लिए उपयोगिता विधियां, निर्दिष्ट वर्ग के सरणियों के लिए स्ट्रिंग सरणियां।
कॉमन्स-लैंग : ArrayUtils -> सरणियों पर संचालन, आदिम सरणियाँ (जैसे int []) और आदिम आवरण आवरण (जैसे Integer [])।
स्प्रिंग फ्रेमवर्क : स्प्रिंग को प्रॉपर्टीएडिटर के लिए एक उत्कृष्ट समर्थन है, जिसका उपयोग ऑब्जेक्ट्स को स्ट्रिंग्स से / में बदलने के लिए भी किया जा सकता है।
डोजर : डोजर एक शक्तिशाली, अभी तक सरल जावा बीन से जावा बीन मैपर है जो डेटा को एक वस्तु से दूसरी वस्तु में पुन: कॉपी करता है। आमतौर पर, ये जावा बीन्स विभिन्न प्रकार के होंगे।
ModelMapper : ModelMapper एक बुद्धिमान वस्तु मैपिंग फ्रेमवर्क है जो स्वचालित रूप से वस्तुओं को एक दूसरे से मैप करता है। यह विशिष्ट उपयोग के मामलों को संभालने के लिए एक सरल रीफैक्टरिंग सुरक्षित एपीआई प्रदान करते हुए मैप ऑब्जेक्ट्स के लिए एक कन्वेंशन आधारित दृष्टिकोण का उपयोग करता है।
MapStruct : MapStruct बीन मैपिंग के लिए एक संकलन-समय कोड जनरेटर है, जिसके परिणामस्वरूप तेजी (प्रतिबिंब या समान का कोई उपयोग नहीं), निर्भरता कम और टाइप-सेफ मैपिंग कोड रनटाइम पर।
ओरिका : ओरिका न्यूनतम ओवरहेड के साथ तेजी से मैपर बनाने के लिए बाइट कोड पीढ़ी का उपयोग करता है।
सेल्मा : मैपिंग के लिए संकलन-समय कोड-जनरेटर
जेपर : बीन मैपर जेनरेशन एनोटेशन, एक्सएमएल या एपीआई (मृत प्रतीत होता है, अंतिम अद्यतन 2 साल पहले का उपयोग करके)
स्मूक्स : स्मूक्स जावाबीन कार्ट्रिज आपको अपने संदेश डेटा (यानी बाइंड डेटा) से जावा वस्तुओं को बनाने और आबाद करने की अनुमति देता है ( टिप्पणियों में सुपरफिलिन द्वारा सुझाया गया है)। (अब सक्रिय विकास के तहत नहीं)
कॉमन्स-कन्वर्ट : कॉमन्स-कन्वर्ट का उद्देश्य एक प्रकार के ऑब्जेक्ट को एक प्रकार से दूसरे में परिवर्तित करने के लिए समर्पित एक लाइब्रेरी प्रदान करना है। पहला चरण ऑब्जेक्ट टू स्ट्रिंग और स्ट्रिंग टू ऑब्जेक्ट रूपांतरण होगा। (लगता है मृत, अंतिम अपडेट 2010)
Transmorph : Transmorph एक मुक्त जावा लाइब्रेरी है जिसका उपयोग एक प्रकार की जावा वस्तु को दूसरे प्रकार की वस्तु में बदलने के लिए किया जाता है (दूसरे हस्ताक्षर के साथ, संभवतः पैरामीटर किया जाता है)। (लगता है मृत, आखिरी अपडेट 2013)
EZMorph : EZMorph एक ऑब्जेक्ट को दूसरी ऑब्जेक्ट में बदलने के लिए सरल जावा लाइब्रेरी है। यह आदिम और वस्तुओं के लिए परिवर्तन का समर्थन करता है, डायनेमिक्स के साथ बहुआयामी सरणियों और परिवर्तनों के लिए (लगता है कि मृत, अंतिम अद्यतन)
मोर्फ : मोर्फ एक जावा ढांचा है जो किसी एप्लिकेशन की आंतरिक अंतर-क्षमता को आसान बनाता है। जैसे-जैसे सूचना एक आवेदन के माध्यम से बहती है, यह कई परिवर्तनों से गुजरती है। मॉर्फ इन परिवर्तनों को लागू करने के लिए एक मानक तरीका प्रदान करता है। (लगता है मर चुका है, आखिरी अपडेट 2008)
लोरेंत्ज़ : लोरेंट्ज़ एक सामान्य वस्तु-से-ऑब्जेक्ट रूपांतरण ढांचा है। यह एक प्रकार की जावा वस्तुओं को दूसरे प्रकार की वस्तु में बदलने के लिए एक सरल एपीआई प्रदान करता है। (मृत लगता है)
OTOM : OTOM के साथ, आप किसी भी ऑब्जेक्ट को किसी भी ऑब्जेक्ट से किसी अन्य ऑब्जेक्ट में कॉपी कर सकते हैं। संभावनाएं अनंत हैं। "शरद ऋतु" में आपका स्वागत है। (मृत लगता है)
एक और है ओरिका - https://github.com/orika-mapper/orika
ओरिका एक जावा बीन मैपिंग ढांचा है जो एक वस्तु से दूसरी वस्तु में डेटा (अन्य क्षमताओं के बीच) की प्रतिलिपि बनाता है। बहुस्तरीय अनुप्रयोगों को विकसित करते समय यह बहुत उपयोगी हो सकता है।
जहां जरूरत हो, विन्यास और विस्तार के माध्यम से अनुकूलन प्रदान करते हुए, ओरीका जितना संभव हो उतना स्वचालित करने पर ध्यान केंद्रित करता है।
Orika डेवलपर को सक्षम करता है:
- नक्शा जटिल और गहराई से संरचित वस्तुओं
- "समतल" या "विस्तारित" ऑब्जेक्ट्स को नेस्टेड गुणों को शीर्ष-स्तरीय संपत्तियों के मानचित्रण द्वारा और इसके विपरीत
- मैपिंग-ऑन-द-फ्लाई बनाएं, और कुछ या सभी मैपिंग को नियंत्रित करने के लिए अनुकूलन लागू करें
- ऑब्जेक्ट ग्राफ में कहीं भी वस्तुओं के एक विशिष्ट सेट की मैपिंग पर पूर्ण नियंत्रण के लिए कन्वर्टर्स बनाएं - प्रकार द्वारा, या यहां तक कि विशिष्ट संपत्ति नाम से भी
- समीपवर्ती या बढ़ी हुई वस्तुओं को संभालें (जैसे कि हाइबरनेट, या विभिन्न नकली रूपरेखा)
- द्वि-दिशात्मक मानचित्रण को एक कॉन्फ़िगरेशन के साथ लागू करें
- लक्ष्य सार वर्ग या इंटरफ़ेस के लिए एक उपयुक्त ठोस वर्ग के उदाहरणों के लिए मानचित्र
- रिवर्स मैपिंग संभालें
- JavaBean स्पेक्स से परे जटिल सम्मेलनों को संभालें।
ओरिका न्यूनतम ओवरहेड के साथ तेजी से मैपर बनाने के लिए बाइट कोड पीढ़ी का उपयोग करता है।
ModelMapper एक और लाइब्रेरी है जो चेक आउट करने लायक है। ModelMapper का डिज़ाइन अन्य पुस्तकालयों से अलग है जिसमें यह है:
अधिक जानकारी के लिए ModelMapper साइट देखें:
अपाचे कॉमन्स सेम का उपयोग करें:
static void copyProperties(Object dest, Object orig)
-प्रॉपर्टी के नाम मूल बीन से गंतव्य बीन तक सभी मामलों के लिए जहां संपत्ति के नाम समान हैं।
एक और जावा मैपिंग इंजन / ढांचा है Nomin: http://nomin.sourceforge.net ।
मेरा सुझाव है कि आप JMapper फ्रेमवर्क का प्रयास करें ।
यह जावा बीन मैपर के लिए एक जावा बीन है, आप एनोटेशन और / या एक्सएमएल के साथ गतिशील रूप से डेटा के पारित होने की अनुमति देता है।
JMapper के साथ आप कर सकते हैं:
मुझे मू को एक विकल्प के रूप में जोड़ने में खुशी हो रही है, हालांकि स्पष्ट रूप से मैं इसके प्रति पक्षपाती हूं: http://geoffreywiseman.github.Mn/
सरल मामलों के लिए उपयोग करना बहुत आसान है, अधिक जटिल मामलों के लिए उचित सक्षम है, हालांकि अभी भी कुछ ऐसे क्षेत्र हैं जहां मैं इसे और अधिक जटिलताओं के लिए बढ़ाने की कल्पना कर सकता हूं।
आप डोजर के आधार पर मैपिंग ढांचे की भी कोशिश कर सकते हैं, लेकिन एक्सेल मैपिंग घोषणा के साथ। उन्हें कुछ उपकरण और अतिरिक्त शांत सुविधाएँ मिली हैं। Http://openl-tablets.sf.net/mapper पर देखें
new ObjectMapper().convertValue(...)
। जैक्सन को एनोटेशन और एनोटेशन-मिक्सिन्स के लिए भी समर्थन है इसलिए मुझे यह एक बहुत अच्छा विकल्प लगता है।