जैसा कि मैं डोमेन संचालित डिजाइन की अपनी समझ के साथ काम करता हूं, मुझे लगता है कि मेरे पास ऐसा नियम है जो काम करता प्रतीत होता है, हालांकि मैं देखना चाहता हूं कि यह अधिक है या नहीं और यह भी उसी स्थिति के अन्य दृष्टिकोण देखना चाहता है।डीडीडी डोमेन ऑब्जेक्ट के रूप में एक दृढ़ता ऑब्जेक्ट का उपयोग करने के बजाय मुझे डोमेन ऑब्जेक्ट और एक स्थिरता ऑब्जेक्ट कब बनाना चाहिए?
मेरा प्रश्न यह है: "डोमेन मॉडल और दृढ़ता मॉडल को अलग-अलग वस्तुओं में कब निहित किया जाना चाहिए?" इस समय मेरी पसंद की भाषा जावा है और मैं स्प्रिंग डेटा के रिपोजिटरी मॉडल का उपयोग कर रहा हूं।
मुझे अपने प्रश्न के तीन मुख्य उत्तर दिखाई देते हैं।
- हमेशा निरंतर वस्तुओं से अलग डोमेन ऑब्जेक्ट्स का उपयोग करें।
- दृढ़ता ऑब्जेक्ट्स पर डोमेन विधियों (व्यवहार) डालने पर केवल अलग डोमेन ऑब्जेक्ट्स का उपयोग करें व्यावहारिक नहीं है।
- सभी मामलों में डोमेन ऑब्जेक्ट्स के रूप में दृढ़ता ऑब्जेक्ट्स का उपयोग करें।
डीडीडी के बारे में प्रश्न पूछने के लिए मुझे लगता है कि मुझे एक उदाहरण बाध्य संदर्भ का उपयोग करना है क्योंकि मुझे अभी तक डीडीडी के बारे में और अधिक अमूर्त तरीके से पूछने के बारे में पर्याप्त जानकारी नहीं है।
यहाँ मेरी निदर्शी घिरा संदर्भ है: कहते हैं कि मैं निम्नलिखित व्यापार नियमों के साथ एक कानून संहिताकरण प्रणाली है:
- प्रत्येक कानून पुस्तकों पर वर्गीकृत किया जाना चाहिए।
- प्रत्येक कानून में दो भागों, एक कोडिफिकेशन नंबर उपसर्ग और एक कोडिफिकेशन कोसिगिन प्रत्यय के साथ एक पहचानकर्ता है। (उदाहरण: 100-0100, 59 9-2030)।
- कानून कोडिफिकेशन सिस्टम का उपयोग कर रहे कई कानूनी क्षेत्राधिकार हैं और वे अपने स्वयं के कोसिगिन बनाने में सक्षम होना चाहिए लेकिन कोडिफिकेशन उपसर्ग वैश्विक हैं और सामान्य तुलनात्मकता की सुविधा के लिए सभी अधिकार क्षेत्र में समान होना चाहिए।
- कोडिफिकेशन संख्या उपसर्गों को व्यापक कोडिफिकेशन श्रेणियों में समूहीकृत किया गया है।
table: codification fields: chart_code, prefix, coassign, codification_category table: codification_chart fields: chart_code, jurisdiction_description table: codification_category fields: category, low_category_number, high_category_number, description table: global_codification fields: prefix, coassign, codification_category
: संहिताकरण श्रेणियों संख्या श्रेणी के, इस तरह के रूप 100-199, 200-299, 700-799, आदि
एक सतत मॉडल के रूप में इस घिरे संदर्भ मैं निम्नलिखित है व्यक्त करने के लिए है मुझे पता है, मुझे पहले डोमेन मॉडल से शुरू होना चाहिए। मैं एक सतत मॉडल और एक डोमेन मॉडल
मेरे डोमेन मॉडल में है मैं तीन डोमेन वस्तुओं
public Codification {
private String prefix, coassign;
codificationCategory codificationCaegory; // an enum type
public Codification(...) { // set private vars }
// getters for private variables
}
public CodificationChart {
private List<Codification> chartCodifications = new ArrayList<>();
private String chartCode;
// public constructor to initialize private variables
// getters for private variables
public Codification addCodificationToChart(Codification){...}
public void removeCodificationFromChart(Codification){...}
public boolean checkCodificationInChart(Codification){...}
}
public enum CodificationCategory {
CIVIL, CRIMINAL, PROPERTY, CORPORATE, FAMILY, CONSUMER, ETHICS, BANKRUPTCY;
}
ORM वस्तुओं है:
JPA Mappings of the tables mentioned earlier with the "Entity" suffix added to their table names.
They are omitted for brevity.
Each one contains getters and setters like JPA Pojos do.
If someone asks for the Persistence objects code I will post it.
केवल बिंदु है जिस पर मेरे डोमेन वस्तुओं के बारे में पता दृढ़ता मॉडल मेरे फैक्ट्री ऑब्जेक्ट CodificationChartFactory
में है, जिसमें रिपोजिटरी इंटरफेस है जिसका उपयोग मैं पहले उल्लिखित ओआरएम ऑब्जेक्ट्स के साथ बातचीत करने के लिए कर रहा हूं। यह कारखाना डोमेन का एकमात्र हिस्सा है जो दृढ़ता भंडार का उपयोग करता है, इस प्रकार एकमात्र हिस्सा जो दृढ़ता परत के साथ बातचीत करता है।
अपशिष्ट प्रयास यहां एक अलग डोमेन मॉडल बना रहा है? मैं देख सकता हूं कि मेरे कोडिफिकेशन ऑब्जेक्ट पर मेरे कोडिफिकेशन चार्ट व्यवहार को कैसे रखना संभव है। यह किसी भी तरह से उन व्यवहारों को एक दृढ़ वस्तु पर रखने में गलत लगता है, जो केवल नौकरी है डेटाबेस से रिकॉर्ड पुनर्प्राप्त करना।
मैं निश्चित रूप से सही होने के लिए खड़ा हूं।
धन्यवाद -
मैं 3 साल पहले एक बहुत ही इसी तरह के सवाल, जो मैं प्रोग्रामर साइट पर पोस्ट किया था। मैं डोमेन और दृढ़ता को मिश्रण करने के लिए थोड़ा डर था क्योंकि मैंने सोचा था कि अन्य पेशेवरों ने ऐसा नहीं किया है। मैं कोशिश करूँगा और देखता हूं कि मुझे यह कैसा लगता है। मैं मानता हूं कि जेपीए का उपयोग करने के मामले में अलगाव होने से निश्चित रूप से जटिलता की एक और परत की तरह लगता है जो सख्ती से जरूरी नहीं है। मुझे पसंद है कि आपने चीजों को एक साथ रखने की दिशा में और कैसे उत्तर दिया है। मैं एक ऐसा उत्तर देखना चाहता हूं जहां कोई उन्हें अलग करने की वकालत करता है ताकि मैं देख सकूं कि जेपीए का उपयोग करने के मामले में ऐसा करने का कोई अच्छा कारण है या नहीं। –
यह वही है जहां मैं खड़ा हूं, अगस्तो को धन्यवाद कि मैं इसे बेहतर रख सकूं :) इसके अलावा, मुझे जावा के बारे में बहुत कुछ पता नहीं है लेकिन क्या "घुसपैठ" जेपीए एनोटेशन का विकल्प नहीं है जहां मैपिंग विवरण होंगे किसी प्रकार की "धाराप्रवाह मैपिंग" फ़ाइल के लिए बाहरी (जैसे पुराने पुराने दिन एक्सएमएल ओआरएम कॉन्फ़िगरेशन लेकिन कोड में)? यह निरंतर अज्ञानता आईएमओ के साथ बहुत मदद करेगा। – guillaume31
@ guillaume31 हाइबरनेट अभी भी एक्सएमएल मैपिंग का समर्थन करता है (कई साल पहले मेरे सहयोगियों ने इस दृष्टिकोण को प्राथमिकता दी थी, इसलिए उत्पादन कोड और मैपिंग के बीच कोई स्थिर संबंध नहीं होगा)। मुझे किसी भी एक्सटेंशन के बारे में पता नहीं है जो एक अच्छा डीएसएल में मैपिंग को परिभाषित करने की अनुमति दे सकता है ... लेकिन यह एक बनाने का मामला हो सकता है (दुर्भाग्यवश, यह ओआरएम विशिष्ट होगा)। आखिरी ... मैंने कभी भी ऐसा एप्लिकेशन नहीं देखा है जहां जावा में डेटा एक्सेस 100% पारदर्शी था, यह हमेशा एक लकीर अमूर्तता है। – Augusto