2011-11-14 18 views
9

मॉडल को अपडेट करने के लिए सबसे अच्छा अभ्यास क्या है जहां केवल कुछ फ़ील्ड अपडेट किए जाने हैं?हाइबरनेट मॉडल का आंशिक अद्यतन

ईजी।

अगर मैं के साथ एक व्यक्ति मॉडल है:

नाम जन्मतिथि पता

और एक रूप है जहाँ मैं केवल अद्यतन करना चाहते:

पता

दो विकल्प मैं वर्तमान में कर सकते हैं देखें:

  1. कस्टम फॉर्म मॉडल रखने के लिए जिसमें केवल पता है - पोस्टबैक पर डीबी को नाम और जन्मदिन भरने के लिए मेरी ऑब्जेक्ट पुनर्प्राप्त करने के लिए कॉल करें, फिर डीबी पर वापस जाएं।
  2. कस्टम अपडेट SQL केवल प्रासंगिक फ़ील्ड को अपडेट करने के लिए।

यदि संभव हो तो मैं हाइबरनेट मॉडल का उपयोग करना पसंद करूंगा, इसलिए मैं वर्तमान में # 1 का उपयोग कर रहा हूं।

क्या कोई बेहतर तरीका है?

+0

क्या यह एक प्रदर्शन संबंधी समस्या या व्यावसायिक मामला मुद्दा है, जैसा नाम और पता बदल गया है, लेकिन आप केवल पता अपडेट करना चाहते हैं? –

उत्तर

6

हाइबरनेट कैसे एक SQL अद्यतन बनाता है केवल an attribute called dynamic-update on the class mapping का उपयोग करके बदल गए फ़ील्ड को अपडेट करने के लिए कॉन्फ़िगर किया जा सकता है।

यदि हाइबरनेट पत्तियां उपयोगी दिखने वाली कार्यक्षमता को डिफ़ॉल्ट रूप से निष्क्रिय कर देती हैं तो ऐसा इसलिए होता है क्योंकि व्यापार-बंद होते हैं। जुड़ा हुआ प्रलेखन कहना है:

गतिशील अद्यतन और गतिशील-डालने सेटिंग्स उपवर्गों को विरासत में नहीं कर रहे हैं, ताकि वे भी या तत्वों पर निर्दिष्ट किया जा सकता। हालांकि इन सेटिंग्स में कुछ मामलों में प्रदर्शन बढ़ सकता है, लेकिन वे वास्तव में दूसरों में प्रदर्शन कम कर सकते हैं।

+4

+1, बस ध्यान दें कि यदि एनोटेशन का उपयोग करना है तो आपके पास '@ org.hibernate.annotations.Entity (dynamicUpdate = true)' – Bozho

+0

दुर्भाग्य से समय की बाधाओं के कारण, मुझे अभी आगे बढ़ना पड़ा है। यह सबसे अच्छा विकल्प लगता है और जब मुझे मौका मिलता है तो मैं इसका परीक्षण करूंगा। धन्यवाद! – Donald

+0

@ डोनाल्ड: इस बात से अवगत रहें कि अगर हाइबरनेट पत्तियों को उपयोगी दिखने वाली कार्यक्षमता को डिफ़ॉल्ट रूप से निष्क्रिय कर दिया जाता है तो ऐसा इसलिए होता है क्योंकि व्यापार-बंद होते हैं। दस्तावेज़ जो मैंने लिंक किया है, "डायनामिक-अपडेट और डायनामिक-डालने सेटिंग्स को उप-वर्गों द्वारा विरासत में नहीं मिला है, इसलिए उन्हें या तत्वों पर भी निर्दिष्ट किया जा सकता है। हालांकि इन सेटिंग्स में कुछ मामलों में प्रदर्शन बढ़ सकता है, वे वास्तव में दूसरों में प्रदर्शन कम कर सकते हैं। " –

2

सर्वोत्तम अभ्यास प्रदर्शन अनुकूलन को तब तक छोड़ना है जब तक आपको इसकी आवश्यकता न हो।

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