मैं अपने ओआरएम के रूप में डॉक्टर 2 का उपयोग कर रहा हूं, और चीजें अच्छी तरह से चल रही हैं, लेकिन मैं EntityManager#persist()
विधि के बारे में सोच रहा हूं। "Persisting entities" प्रलेखन वस्तु X
के लिए persist()
के लिए एक कॉल के बारे में निम्नलिखित कहते हैं:जब कॉल करना है
हैं एक्स एक पहले से मौजूद कामयाब इकाई है, यह जारी रहती है आपरेशन के द्वारा नजरअंदाज कर दिया है।
इससे मुझे विश्वास होता है कि persist()
केवल ऑब्जेक्ट नया होने पर ही कॉल किया जाना चाहिए और अभी तक डेटाबेस में सहेजा नहीं गया है। हालांकि, "Deferred Explicit" change tracking policy के लिए दस्तावेज़ का कहना है:
... सिद्धांत 2 केवल संस्थाओं से, जिन्हें स्पष्ट रूप से परिवर्तन का पता लगाने के लिए चिह्नित किया गया जारी रहती है (इकाई) EntityManager के लिए एक कॉल # के माध्यम से समझता है ...
... जो persist()
जैसा लगता है उसे ऑब्जेक्ट पर अपडेट किया जाना चाहिए। persist()
कब कहा जाना चाहिए? अगर केवल नई वस्तुओं पर, क्या किसी भी इकाई को अद्यतन होने पर और सिद्धांत को अंतर को हल करने के लिए वैसे भी कॉल करने के लिए एक महत्वपूर्ण प्रदर्शन हिट होता है?
ध्यान दें कि डिफर्ड इम्प्लीट चेंज ट्रैकिंग (डिफ़ॉल्ट) का उपयोग करते समय, सिद्धांत यूनिटऑफवर्क में मौजूद प्रत्येक इकाई के लिए प्रत्येक संपत्ति के लिए नए मूल्य (अब तक डिफर्ड स्पष्टीकरण के समान) के साथ मूल मूल्य की तुलना करेगा, न केवल जिन्हें आप 'persist()' कहते हैं। –
इस समस्या से उत्तेजित होने तक समस्या का आधा जीवन समाप्त हुआ कि डिफ़ॉल्ट नीति स्पष्ट नीति है। –