2012-12-20 23 views
7

पर्यावरण
स्प्रिंग/हाइबरनेट/MySQL वेब अनुप्रयोगगैर-शून्य क्षेत्रों के साथ "पूर्ण बाद में" functonality कैसे कार्यान्वित करें?

समस्या
मैं एक बहु-चरण रूप है जो बाद में पूरा करने के लिए हर कदम पर savable होना चाहिए। लेकिन अपूर्ण चरणों में ऐसे फ़ील्ड हो सकते हैं जो मॉडल के लिए आवश्यक हैं, जिससे मॉडल को सहेजना संभव नहीं हो जाता है।

मैं क्या करने की कोशिश की या कोशिश कर

  1. क्षेत्रों नल बनाने के बारे में सोचा है।
  2. अस्थायी तालिका का उपयोग करना अधूरा रूपों

लेकिन बचाने के लिए ..
समाधान 1 बाधित डेटाबेस डिजाइन, और समाधान 2 टुकड़े के साथ अपने कोड ब्लोट अस्थायी मॉडल और स्थायी एक के बीच परिवर्तित करने के लिए होगा, और अगर मैं इसे सहेजने के बाद फॉर्म को संपादित करने की क्षमता जोड़ता हूं तो यह बदसूरत हो जाएगा।

पूरी तरह से बाद में सुविधा को कैसे लागू किया जाए, जो निर्बाध और सुरुचिपूर्ण है?

उत्तर

2

एक और विकल्प है आपकी डेटाबेस तालिका complete_edit में boolean कॉलम होना। और उन स्तंभों के लिए जिन्हें सहेजने के दौरान पहली जगह में दर्ज नहीं किया गया है, या तो स्टोर डिफ़ॉल्ट मान या "NOT_COMPLETE" जैसे स्ट्रिंग को सेट करें और complete_edit कॉलम को झूठी के रूप में सेट करें। केवल सबमिट करने पर यह कॉलम सत्य होना चाहिए।

2

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

हम भेदभावकर्ता स्थिति कॉलम के साथ एक एकल तालिका दृष्टिकोण की ओर बढ़ रहे हैं जो इन प्रगति-चालानों को वर्गीकृत करेगा जैसे कि स्थिति को फ़्लिप होने तक बाद के वर्कफ़्लो चरणों द्वारा उन्हें नहीं चुना जाता है।

0

मैंने सोल्यूशन 2: अस्थायी तालिका की सिफारिश की: क्योंकि यह स्पष्ट रूप से आपके डोमेन मॉडल (सामान्य तालिका) और कुछ जीयूआई सामानों के बीच अंतर करता है, जैसे लगातार विज़ार्ड।

यदि आप अलग नहीं हैं तो आपको अपने कार्यक्रम में हर जगह जांचना होगा, यह डेटा डोमेन मॉडल डेटा या गुई डेटा है (जो प्रत्येक चीज़ पूर्ण होने के बाद डोमेन डेटा बन जाएगा)।

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