2010-02-16 11 views
9

चूंकि मूल्य वस्तुओं के लिए कोई राहत नहीं है। मैं सभी मूल्य वस्तुओं को कैसे लोड कर सकता हूं?मूल्य वस्तुएं कैसे सहेजी जाती हैं और लोड की जाती हैं?

मान लीजिए हम एक ब्लॉग आवेदन मॉडल कर रहे हैं और हम इस वर्ग:

  • पोस्ट (इकाई)
  • टिप्पणी (मूल्य वस्तु)
  • टैग (मूल्य वस्तु)
  • PostsRespository (respository)

मुझे पता है कि जब मैं एक नई पोस्ट सहेजता हूं, तो इसके टैग उसी तालिका में सहेजे जाते हैं। लेकिन मैं सभी पदों के सभी टैग कैसे लोड कर सकता हूं। पदों को रिपोजिटरी के पास सभी टैग लोड करने का तरीका होना चाहिए? मैं आमतौर पर इसे करता हूं, लेकिन मैं अन्य राय जानना चाहता हूं

उत्तर

8

मैं इस सवाल के लिए एक बेहतर समाधान के लिए देख रहा हूँ और मैं इस पोस्ट पाया:

http://gojko.net/2009/09/30/ddd-and-relational-databases-the-value-object-dilemma/

इस पोस्ट में बहुत अच्छी तरह से स्पष्टीकरण दें कि मूल्य की वस्तुओं और डेटाबेस के साथ भ्रम का एक बहुत है। यहाँ आप वाक्यांश जो मुझे बहुत अधिक पसंद आया है: "। हठ एक बहाना संस्थाओं के लिए सब कुछ करने के लिए बारी नहीं है"

गोज्को एज़िक, हमें हमारे मूल्य की वस्तुओं को बचाने के लिए तीन विकल्प देना ।

+0

रिलेशनल डेटाबेस और ओआरएम अक्सर आकस्मिक संस्थाओं को बनाने में हमें चाल करते हैं http://www.jefclaes.be/2013/05/accidental-entities-you-dont-need-that.html – JefClaes

+0

लिंक – yeraycaballero

+0

@yeraycaballero के लिए धन्यवाद अगर मैं बचाता हूं टेक्स्ट ऑब्जेक्ट में ऑब्जेक्ट ऑब्जेक्ट (विकल्प 3), मुझे मूल्य ऑब्जेक्ट पर परमाणु अद्यतन करने के लिए कैसे करना चाहिए? –

3

मैं वर्तमान में इसी तरह के उदाहरण के माध्यम से काम कर रहा हूं। एक बार जब आपको टैग को विशिष्ट रूप से संदर्भित करने की आवश्यकता होती है तो वे कोई साधारण साधारण वस्तु नहीं होते हैं और जटिलता में बढ़ते रह सकते हैं। मैंने उन्हें अपनी संस्था बनाने और उन्हें पुनः प्राप्त करने के लिए एक अलग भंडार बनाने का फैसला किया। अधिकांश परिदृश्यों में वे पोस्ट के साथ लोड या सहेजे जाते हैं, लेकिन जब उन्हें अकेले जरूरी होता है तो अन्य भंडार का उपयोग किया जाता है।

मुझे उम्मीद है कि इससे मदद मिलती है।

संपादित करें: इस पोस्ट के लिए धन्यवाद मैंने अपने आवेदन को थोड़ा सा पुनर्गठन करने का निर्णय लिया। आप सही हैं कि शायद मैं गलत तरीके से एक इकाई बना रहा था। मैंने तब से अपना आवेदन बदल दिया है ताकि टैग केवल स्ट्रिंग हों और पोस्ट रिपोजिटरी टैग के चारों ओर सभी स्टोरेज आवश्यकताओं को संभालती है। उन परिचालनों के लिए जिन्हें पोस्ट की आवश्यकता होती है उनके साथ टैग लोड होते हैं। किसी भी ऑपरेशन के लिए केवल टैग या टैग की सूचियों की आवश्यकता होती है, जिसके लिए रिपॉजिटरी के पास विधियां होती हैं।

+0

उत्तर के लिए धन्यवाद। तो आपके पास एक टैग रिपोजिटरी है। क्या आपके पास डेटाबेस में टैग टेबल भी है? – yeraycaballero

+0

मैंने वास्तव में अभी तक डेटाबेस पर फैसला नहीं किया है। मेरे पास शायद एक अलग डेटाबेस नहीं होगा और मैं ऑब्जेक्ट या दस्तावेज़ डेटाबेस समाधान जैसे मोंगो या सोफे पर दृढ़ता से विचार कर रहा हूं। – smaclell

0

यहां मेरा यह तरीका है कि मैं इस प्रकार की समस्या को कैसे हल कर सकता हूं जिस तरह से मैं वर्तमान में डीडीडी का अभ्यास कर रहा हूं।

यदि आप कुछ संपादित कर रहे हैं जिसके लिए टैग को जोड़ने और टैग जैसे हटाए जाने की आवश्यकता है तो टैग इकाइयां हो सकती हैं लेकिन शायद वे मूल्य वस्तुएं हो सकती हैं और किसी भी तरह से पोस्ट के साथ लोड और सहेजी जाती हैं। जब तक ऑब्जेक्ट को संशोधित करने की आवश्यकता नहीं होती है, तब तक मैं व्यक्तिगत रूप से मूल्य वस्तुओं का पक्ष लेता हूं लेकिन मुझे एहसास है कि इकाई ऑब्जेक्ट के बीच एक अंतर है जिसे केवल "स्नैपशॉट्स" और वास्तविक मूल्य ऑब्जेक्ट्स के रूप में चिह्नित किया गया है, जिनमें पहचान की कमी है। मुश्किल हिस्सा यह है कि शायद कभी-कभी जो आप आमतौर पर कुंजी के रूप में सोचते हैं वह एक मूल्य वस्तु का हिस्सा हो सकता है जब तक कि उस संदर्भ में पहचान के रूप में उपयोग नहीं किया जाता है और मुझे लगता है कि टैग इस श्रेणी में आते हैं।

यदि आप टैग को स्वयं संपादित कर रहे हैं तो यह शायद एक अलग बाध्य संदर्भ है या कम से कम एक अलग योग जिसमें टैग स्वयं कुल रूट हैं और एक भंडार के माध्यम से बने रहते हैं। ध्यान दें कि इस संदर्भ में टैग का प्रतिनिधित्व करने वाली इकाई वर्ग को पोस्ट कुल में उपयोग किए गए टैग के लिए समान इकाई वर्ग नहीं होना चाहिए।

यदि आपकी लिस्टिंग केवल अनुवाद उद्देश्यों को पढ़ने के लिए डिस्प्ले पर टैग उपलब्ध है, तो शायद यह मूल्य वस्तुओं की एक सूची है। ये मान ऑब्जेक्ट्स डोमेन मॉडल में नहीं हो सकते हैं क्योंकि वे मुख्य रूप से यूआई का समर्थन करने के बारे में हैं और वास्तविक डोमेन के बारे में नहीं हैं।

कृपया किसी के बारे में कोई विचार है कि इस पर मेरा विचार गलत क्यों हो सकता है, लेकिन इस तरह से मैं इसे कर रहा हूं।

संबंधित मुद्दे