डेटाबेस के संदर्भ में REFRESH और MERGE का क्या अर्थ है?


93

मैं उत्सुक हूं और इस उत्तर को जल्दी खोजने की जरूरत है। Google बहुत मदद नहीं करेगा।

जावा पर्सिस्टेंस एपीआई में ये गुण होते हैं जो संबंधित संस्थाओं पर कैस्केड संचालन के लिए रूपरेखा बताते हैं:

CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH

मैं जानता हूं कि पहले दो का क्या मतलब है: जब मैं ए को ए रखता हूं, जिसमें बी है, तो बी को भी बनाए रखें, और जब मैं ए को हटाता हूं, तो बी को भी हटा देता हूं।

लेकिन मुझे इस बात से कोई मतलब नहीं है कि अन्य दो क्या हासिल करते हैं। मदद?

जवाबों:


79

REFRESH का अर्थ है "डेटाबेस से किसी भी राज्य परिवर्तन को मेरे प्रतिनिधित्व में खींचें"। कैस्केडिंग यह सरल है; इसका अर्थ है कि सभी संबद्ध निकाय ताज़ा हैं।

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

प्रासंगिक डॉक्स के एक उदाहरण से लिंक करें


डिफ़ॉल्ट क्या है (यदि हमने कोई CascadeType सेट नहीं किया है), और सेट करने के लिए सबसे समझदार / सामान्य क्या है?
रोजी कासिम

@ रोसडी कासिम: CascadeTypeएक खाली सरणी में चूक।
user1438038

@ कोच माता-पिता के अपडेटेड / रिफ्रेश होने पर डेटाबेस में क्या है, मैच करने के लिए बच्चों को रिफ्रेश करते हैं। मर्ज मूल रूप से माता-पिता के साथ बच्चों की संस्थाओं को प्रतिबिंबित करने के लिए डेटाबेस में बच्चों में अद्यतन फ़ील्ड को अनिवार्य रूप से अधिलेखित करेगा। तो अगर दोनों का उपयोग किया जाता है, तो क्या होता है? मुझे लगता है कि मैंने इसे गलत समझा है।
जॉर्डन मैकी

87

JPA एनोटेशन का अर्थ है कई रिश्तों के लिए कई :

  • स्रोत इकाई पर किए गए सभी संभावित कैस्केडिंग ऑपरेशन एसोसिएशन के लक्ष्य के लिए कैस्केड किए गए हैं।
  • MERGE - यदि स्रोत इकाई को मिला दिया जाता है, तो मर्ज को एसोसिएशन के लक्ष्य पर कैस्केड किया जाता है।
  • PERSIST - यदि स्रोत इकाई कायम रहती है, तो जारी रखने वाले को संघ के लक्ष्य पर आधारित किया जाता है।
  • REFRESH - यदि स्रोत इकाई को रिफ्रेश किया जाता है, तो रिफ्रेश को एसोसिएशन के लक्ष्य पर कैस्केड किया जाता है।
  • REMOVE - यदि स्रोत इकाई को हटा दिया जाता है, तो एसोसिएशन का लक्ष्य भी हटा दिया जाता है।

मैं खुद उन्हें इस तरह देखता हूं (अधिक पठनीय):

  • MERGE - मौजूदा ऑब्जेक्ट के लिए, तालिका में मौजूदा डेटा को मेरी वस्तु में डेटा के साथ मर्ज करने के लिए। (डेटाबेस के लिए सिंक)
  • PERSIST - डेटाबेस में ऑब्जेक्ट से नए रिकॉर्ड बनाता है।
  • REFRESH - ऑब्जेक्ट में डेटा को रीफ्रेश करना है। शायद डेटाबेस में एक बदलाव हुआ था जिसे सिंक करने की आवश्यकता है। (डेटाबेस से सिंक)
  • REMOVE - है, ठीक है, हटाओ।

1
एनोटेशन के लिए Javadoc ने मेरे लिए कुछ भी स्पष्ट नहीं किया। जवाब के लिए धन्यवाद!
आंद्रे चैलेला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.