मैं कुछ "डेटा" वर्ग ऑब्जेक्ट्स को समान "डेटा" क्लास ऑब्जेक्ट्स में कनवर्ट/मैप करना चाहता हूं। उदाहरण के लिए, डेटाबेस रिकॉर्ड्स के लिए कक्षाओं के लिए वेब फॉर्म के लिए कक्षाएं।डेटा ऑब्जेक्ट्स को कोटलिन डेटा ऑब्जेक्ट्स को मैप करने का बेहतर तरीका
data class PersonForm(
val firstName: String,
val lastName: String,
val age: Int,
// maybe many fields exist here like address, card number, etc.
val tel: String
)
// maps to ...
data class PersonRecord(
val name: String, // "${firstName} ${lastName}"
val age: Int, // copy of age
// maybe many fields exist here like address, card number, etc.
val tel: String // copy of tel
)
मैं जावा में इस तरह के कार्यों के लिए ModelMapper उपयोग करते हैं, लेकिन यह क्योंकि डेटा वर्गों अंतिम होते हैं (ModelMapper CGLib प्रॉक्सी बनाता मानचित्रण परिभाषाओं को पढ़ने के लिए) नहीं किया जा सकता। जब हम इन वर्गों/फ़ील्ड को खोलते हैं तो हम मॉडलमैपर का उपयोग कर सकते हैं, लेकिन हमें मैन्युअल रूप से "डेटा" कक्षा की विशेषताओं को लागू करना होगा। (सीएफ मॉडलमैपर उदाहरण: https://github.com/jhalterman/modelmapper/blob/master/examples/src/main/java/org/modelmapper/gettingstarted/GettingStartedExample.java)
कोटलिन में ऐसे "डेटा" ऑब्जेक्ट्स को कैसे मैप करें?
अद्यतन: मॉडलमैपर स्वचालित रूप से ऐसे फ़ील्ड को मानचित्र करता है जिनके पास घोषणाओं को मैप किए बिना समान नाम (जैसे टेल -> टेल) है। मैं इसे कोटलिन के डेटा क्लास के साथ करना चाहता हूं।
अद्यतन: प्रत्येक कक्षा का उद्देश्य किस प्रकार के आवेदन पर निर्भर करता है, लेकिन इन्हें शायद किसी एप्लिकेशन की विभिन्न परत में रखा जाता है।
उदाहरण के लिए:
- डेटाबेस से डेटा (डाटाबेस इकाई) एचटीएमएल फार्म के लिए डेटा को (मॉडल/देखें मॉडल) डेटाबेस
इन कक्षाओं के लिए आंकड़ों के
मैं सामान्य कार्य से बचना चाहते हैं इन कारणों के लिए कहता है:
- यह तर्क के आदेश पर निर्भर करता है। एक वर्ग के लिए एक फ़ंक्शन जिसमें कई प्रकार हैं (जैसे स्ट्रिंग) आसानी से टूटा जाएगा।
- कई घोषणाएं बेकार हैं हालांकि अधिकांश मैपिंग को नामकरण सम्मेलन के साथ हल किया जा सकता है।
बेशक, एक पुस्तकालय जिसमें समान सुविधा है, लेकिन कोटलिन सुविधा की जानकारी भी स्वागत है (जैसे ईसीएमएस्क्रिप्ट में फैलाना)।
कृपया वर्णन करें कि आप मैप किए गए वर्गों का उपयोग कैसे करना चाहते हैं। दो अलग-अलग डेटा प्रारूपों का उद्देश्य क्या है? – voddan
डेटा मॉडल को डुप्लिकेशंस के बारे में कभी नहीं सुना (विरासत कोड के मामलों को छोड़कर)। आम तौर पर जिस डेटा के साथ आप काम कर रहे हैं (देखें मॉडल) ** ** वह डेटा है जिसे आपने डेटाबेस में रखा है। – voddan
@ वोददान एक उपयोग केस डोमेन मॉडल के केवल कुछ हिस्सों को अलग-अलग एपीआई उपभोक्ताओं को बेनकाब करना होगा। डोमेन मॉडल के प्रति _view_ के अलग-अलग डीटीओ होने के नाते यानी [जेसनव्यू] (http://fasterxml.github.io/jackson-annotations/javadoc/2.1.1/com/fasterxml/jackson/annotation/JsonView.html) का उपयोग करने से कहीं अधिक क्लीनर है। IMHO – miensol