सहेजें और saveAndFlush के बीच अंतर स्प्रिंग डेटा jpa में


131

मैं कुछ CRUD ऑपरेशन का परीक्षण करके स्प्रिंग डेटा JPA सीखने की कोशिश कर रहा हूं JpaRepository

मैं दो तरीकों में आए saveऔर saveAndFlush। मुझे इन दोनों में अंतर नहीं है। कॉल करने पर saveभी मेरे परिवर्तन डेटाबेस में सहेजे जा रहे हैं, इसलिए इसका उपयोग क्या है saveAndFlush

जवाबों:


139

पर saveAndFlush, परिवर्तन इस आदेश में तुरंत डीबी को प्लावित कर दिया जाएगा। इसके साथ save, यह जरूरी नहीं है कि सच हो, और जब तक flushया commitआदेश जारी नहीं किए जाते हैं , तब तक सिर्फ स्मृति में रह सकते हैं।

लेकिन ध्यान रहे, कि अगर आप लेन-देन में परिवर्तन को रोकते हैं और उन्हें प्रतिबद्ध नहीं करते हैं, तो भी इस लेनदेन में परिवर्तन तब तक बाहरी लेनदेन को दिखाई नहीं देंगे

आपके मामले में, आप शायद किसी प्रकार के लेन-देन तंत्र का उपयोग करते हैं, जो commitआपके लिए आदेश जारी करता है यदि सब कुछ ठीक काम करता है।


35
"इस लेनदेन में प्रतिबद्ध होने तक बाहरी लेनदेन को नहीं देखा जाएगा" यह अन्य लेनदेन के अलगाव स्तर पर निर्भर करता है। यदि किसी लेन-देन का अलगाव स्तर READ_UNCOMMITTED ation है, तो यह देखेगा कि किस चीज़ को फ़्लश किया गया है लेकिन अभी तक अन्य लेनदेन द्वारा प्रतिबद्ध नहीं है।
गाब:

1
लेकिन, मेरे प्रोजेक्ट में, मैं save (), saveAll () का उपयोग करता हूं और यह DB में कमिट या फ्लश कॉलिंग के बिना स्पष्ट रूप से बना रहता है। तो फिर मुझे SaveAndFlush क्यों पसंद करना चाहिए? फ्लश मोड उन सभी चीजों को डिफ़ॉल्ट मोड में है
पी सतीश पात्रो

37

हाइबरनेट फ्लश मोड पर निर्भर करता है जिसे आप उपयोग कर रहे हैं ( AUTOडिफ़ॉल्ट है) saveसीधे अपने परिवर्तनों को डीबी को लिख सकता है या नहीं कर सकता है। जब आप कॉल saveAndFlushकरते हैं तो आप डीबी के साथ अपने मॉडल राज्य के सिंक्रनाइज़ेशन को लागू कर रहे हैं।

यदि आप फ्लश मोड ऑटो का उपयोग करते हैं और आप अपने एप्लिकेशन का उपयोग पहले सहेजने और फिर डेटा का चयन करने के लिए कर रहे हैं, तो आपको बीच में कोई अंतर नहीं दिखाई देगा save()और saveAndFlush()क्योंकि चयन पहले एक फ्लश को ट्रिगर करता है। डॉक्यूमेंटेशन देखें ।


क्षमा करें, लेकिन अगर मैं saveएक इकाई और फिर से एक ही है, तो आप saveदूसरे आदेश के साथ मतलब उदाहरण के लिए दोहराव के लिए एक अपवाद नहीं फेंक देंगे ??
अज़राफ़ती

3
@ बॉल्ड्रेस हां, यह मेरी समझ है कि कॉल करना बेकार है save। अधिक जानकारी के लिए इस धागे को देखें।
राल्फ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.