दिलचस्प पोस्ट
गिट (संख्या और आकार) में फ़ाइल सीमाएं क्या हैं? क्रोम ब्राउज़र स्वतः पूर्ण = बंद को अनदेखा कर रहा है PHP: कैसे एक तत्व से विशिष्ट तत्व को हटाने के लिए? विकास के लिए क्रोम एक्सटेंशन आईडी प्राप्त करना एंड्रॉइड नेटली इनकमिंग कॉल स्क्रीन की तरह सच कॉलर एंड्रॉइड ऐप की तरह विंडो पॉप अप करें MySQL 600K पंक्तियों से 10 यादृच्छिक पंक्तियों का चयन करें आंतरिक बनाम बनाम कहाँ पायथन में 'है' कीवर्ड कैसे कार्यान्वित किया जाता है? जावा का उपयोग करके सेलेनियम वेबड्राइवर में पॉप-अप कैसे प्रबंधित करें जावास्क्रिप्ट में '1' से '0001' कन्वर्ट करें क्रोम एक्सटेंशन: सामग्री स्क्रिप्ट में स्थानीय स्टोरेज एक्सेस करना जावा में सहानुभूति और उपद्रव का प्रदर्शन करें? अनारॉर्डेड पायथन सेट के 'ऑर्डर' एक सकारात्मक लैम्ब्डा: '+ {}' – यह क्या जादू है? अमूर्त वर्गों का परीक्षण करने के लिए मोकिटो का उपयोग करना

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

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

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 कथन का कारण बन सकता है , इसलिए प्रदर्शन को प्रभावित कर रहा है।

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