दिलचस्प पोस्ट
क्यों उपयोग करें (!! गलती)? HTTP रेंज शीर्षलेख <%%> और <% =%> के बीच अंतर क्या है? कैसे python फ़ंक्शन अपने स्वयं के गुणों को एक्सेस कर सकता है? धागा बनाम थ्रेडपोल Word 2007 .docx फ़ाइल में मैं शब्द कैसे खोज सकता हूं? क्या करता है '?' सीएसएस लिंक में क्या करें? मैं jQuery के माध्यम से एक एंकर क्लिक कैसे अनुकरण कर सकता हूं? सीएसएस प्रॉपर्टी नाम में तारांकन क्या करता है? केवल अल्फ़ान्यूमेरिक को अनुमति देने के लिए जावास्क्रिप्ट के लिए RegEx एप्लिकेशन से फिर से शुरू करें और सूचना से स्टैक करें जावा 8 की वैकल्पिक स्ट्रीम फ्लैटमैप के साथ प्रयोग करना X64 पर गैर-अस्थायी दुकानों के साथ अधिग्रहण / रिलीज़ सिमेंटिक्स अनुरोध के बिना सर्वर पोर्ट नंबर टॉमकेट से प्राप्त करें डीईफ़ मुख्य () का उपयोग क्यों करें?

सीतनिद्रा में होना () और मर्ज () में अंतर क्या है?

सीतनिद्रा में होना () और मर्ज () में अंतर क्या है?

persist() एक अद्यतन और INSERT क्वेरी बना सकते हैं, उदाहरण के लिए:

 SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); A a=new A(); session.persist(a); a.setName("Mario"); session.flush(); 

इस मामले में क्वेरी इस तरह उत्पन्न हो जाएगी:

 Hibernate: insert into A (NAME, ID) values (?, ?) Hibernate: update A set NAME=? where ID=? 

इसलिए persist() विधि एक डालें और एक अद्यतन उत्पन्न कर सकता है

merge() साथ अब merge() :

 SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); Singer singer = new Singer(); singer.setName("Luciano Pavarotti"); session.merge(singer); session.flush(); 

डेटाबेस में मैं यही देख रहा हूं:

 SINGER_ID SINGER_NAME 1 Ricky Martin 2 Madonna 3 Elvis Presley 4 Luciano Pavarotti 

अब merge() का उपयोग करके एक रिकॉर्ड अपडेट करें merge()

 SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); Singer singer = new Singer(); singer.setId(2); singer.setName("Luciano Pavarotti"); session.merge(singer); session.flush(); 

डेटाबेस में मैं यही देख रहा हूं:

 SINGER_ID SINGER_NAME 1 Ricky Martin 2 Luciano Pavarotti 3 Elvis Presley 

वेब के समाधान से एकत्रित समाधान "सीतनिद्रा में होना () और मर्ज () में अंतर क्या है?"

जेपीए विनिर्देश में इन कार्यों के शब्दों का एक बहुत सटीक विवरण शामिल है, जोवाडॉक की तुलना में बेहतर है:

एक इकाई एक्स के लिए लागू होने वाले निरंतर परिचालन के शब्दों, निम्नानुसार हैं:

  • यदि एक्स एक नई इकाई है, तो यह प्रबंधित हो जाता है। इकाई एक्स को लेनदेन कमेटी पर या इससे पहले या फ्लश ऑपरेशन के परिणामस्वरूप डेटाबेस में दर्ज किया जाएगा।

  • यदि एक्स एक पहले वाला प्रबंधन इकाई है, तो यह निरंतर ऑपरेशन द्वारा अनदेखा कर दिया जाता है। हालांकि, एक्स से संदर्भित संस्थाओं को लगातार जारी रखने की प्रक्रिया को कैस्केड किया जाता है, अगर एक्स से इन अन्य संस्थाओं के संबंधों को cascade=PERSIST या cascade=PERSIST cascade=ALL एनोटेशन तत्व मान के साथ एनोटेट किया cascade=PERSIST या समकक्ष एक्सएमएल डिस्क्रिप्टर तत्व के साथ निर्दिष्ट किया जाता है।

  • यदि एक्स निकाला हुआ इकाई है, तो यह प्रबंधित हो जाता है।

  • यदि एक्स एक पृथक ऑब्जेक्ट है, तो EntityExistsException फेंक दिया जा सकता है जब EntityExistsException को लागू किया जाता है, या EntityExistsException या अन्य PersistenceException फ्लश या समय को कम कर दिया जा सकता है।

  • एक्स से संबंध द्वारा संदर्भित सभी इकाइयों के लिए, अगर वाई के संबंध का कैस्केड तत्व मूल्य cascade=PERSIST या cascade=ALL साथ एनोटेट किया गया है, तो वही ऑपरेशन को वाई पर लागू किया जाता है।


एक इकाई एक्स के लिए लागू मर्ज ऑपरेशन के सिमेंटिक इस प्रकार हैं:

  • अगर एक्स एक अलग इकाई है, तो एक्स की स्थिति पूर्व-मौजूदा प्रबंधित इकाई उदाहरण एक्स 'की एक ही पहचान या एक्स का नया प्रबंधित प्रतिलिपि एक्स' बनाई जाती है।

  • यदि एक्स एक नई इकाई उदाहरण है, तो एक नया प्रबंधित इकाई उदाहरण 'X बनाया जाता है और एक्स की स्थिति नए प्रबंधित इकाई उदाहरण X' में कॉपी की जाती है।

  • यदि एक्स निकाला हुआ इकाई उदाहरण है, तो एक IllegalArgumentException मर्ज ऑपरेशन (या लेनदेन प्रतिबद्ध असफल हो) द्वारा फेंक दिया जाएगा।

  • यदि एक्स एक प्रबंधित इकाई है, तो यह मर्ज ऑपरेशन द्वारा अनदेखा कर दिया जाता है, हालांकि, मर्ज ऑपरेशन एक्स से रिश्तों द्वारा संदर्भित संस्थाओं को कैस्केड किया जाता है, यदि इन रिश्तों को कैसकेड तत्व मान के साथ एनोटेट किया गया है तो cascade=MERGE या cascade=ALL एनोटेशन।

  • सभी तत्वों के लिए, X से रिश्तेदारों द्वारा संदर्भित झरने तत्व मान cascade=MERGE या cascade=ALL , वाई को पुनः रूप से वाई के रूप में मिला दिया गया है। एक्स द्वारा संदर्भित सभी ऐसे वाई के लिए, एक्स 'संदर्भ वाई पर सेट है' (ध्यान दें कि अगर एक्स का प्रबंधन किया जाता है तो एक्स एक्स के समान वस्तु है।)

  • अगर एक्स एक इकाई है, जो किसी अन्य इकाई वाई के संदर्भ में है, जहां cascade=MERGE या cascade=ALL निर्दिष्ट नहीं हैं, तो एक्स से समान सहयोग का नेविगेशन 'प्रबंधित ऑब्जेक्ट वाई के संदर्भ को वाई' देता है वाई के रूप में एक ही लगातार पहचान

यह जेपीए से आ रहा है। बहुत आसान तरीके से:

निरंतर (एंटिटी) का उपयोग पूरी तरह से नई संस्थाओं के साथ करने के लिए, उन्हें डीबी (यदि इकाई पहले से ही डीबी में मौजूद है, तो एंटिटी एक्सक्स्टिक्स एक्सपेशंस फेंक) में जोड़ने के लिए इस्तेमाल किया जाना चाहिए।

मर्ज (इकाई) का उपयोग किया जाना चाहिए, इकाई को दृढ़ता संदर्भ में वापस रखने के लिए यदि इकाई अलग थी और बदल गई थी।

निरंतर नई संस्थाओं पर ही बुलाया जाना चाहिए, जबकि मर्ज अलग संस्थाओं को फिर से जोड़ने के लिए है।

यदि आप असाइन किए गए जनरेटर का उपयोग कर रहे हैं, तो मर्ज की बजाय निरंतर उपयोग करके एक अनावश्यक SQL कथन का कारण बन सकता है , इसलिए प्रदर्शन को प्रभावित कर रहा है।

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