java - Difference between Hibernate update by Session.update and HibernateTemplate.merge -


मैंने अपडेट ऑपरेशन के प्रकार देखे: प्रथम:

  getHibernateTemplate ()। निष्पादित करें ( नया हाइबरनेट कॉलबैक () {सार्वजनिक ऑब्जेक्ट doInHibernate (सत्र सत्र) {session.flush (); session.setCacheMode (CacheMode.IGNORE); SomeObject ss = (SomeObject) session.get (SomeObject.class, आईडी); लंबे अगले = ss GetAndIncrement (); session.update (एसएस); session.flush (); वापसी नल;}});   

और दूसरी

  कुछ ऑब्जेक्ट ss = loadSomeObject (); लंबे अगले = ss.getAndIncrement (); getHibernateTemplate.merge (एस एस);   

ये दो विधि एक ही हैं मैं जानना चाहता हूं कि कौन बेहतर और सुरक्षित है और क्यों धन्यवाद।

पहले ऑपरेशन में ऑब्जेक्ट ss संलग्न है सत्र। जहां दूसरे ऑपरेशन में इसकी अलग इसलिए यदि आपके पास कोई अनुलग्न वस्तु है तो आप अपडेट का उपयोग कर सकते हैं। यदि आपके पास एक पृथक ऑब्जेक्ट हैं तो मर्ज का उपयोग करें जो सत्र को ऑब्जेक्ट पहले जोड़ता है तो एक अपडेट करेंगे।

संपादित करें: आपकी जानकारी के लिए संलग्न (निरंतर) और अलग वस्तुएं:

सीतनिद्रा में होना निम्नलिखित वस्तु स्थितियों को परिभाषित करता है और समर्थन करता है:

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

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

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

Comments