CascadeType.REFRESH वास्तव में क्या करता है?


82

CascadeType.REFRESHवास्तव में क्या करता है?

इसके लिए परिभाषा है

जब हम एक इकाई को ताज़ा करते हैं तो इस क्षेत्र में आयोजित सभी निकाय भी ताज़ा हो जाते हैं

लेकिन व्यवहार में इसका क्या मतलब है? क्या कोई मुझे एक सरल उदाहरण दे सकता है?

जवाबों:


119

व्यक्तिगत CascadeType विवरण थोड़ा भ्रमित करने वाला हो सकता है, लेकिन सामान्य मामले से यह पता लगाने का एक आसान तरीका है।

किसी भी CascadeTypeमान के लिए, इसका मतलब है कि यदि इंटरफ़ेस Xका उपयोग करके एक उदाहरण पर ऑपरेशन को बुलाया जाता EntityManagerहै, और उस उदाहरण में अन्य इकाई उदाहरणों का संदर्भ होता है, और उस एसोसिएशन ने CascadeType.Xपरिभाषित किया है, तो EntityManagerऑपरेशन उस संबंधित इकाई पर भी लागू होगा।

तो इस EntityManager.refresh()प्रकार परिभाषित किया गया है:

डेटाबेस से उदाहरण की स्थिति को ताज़ा करें, यदि कोई हो, तो इकाई में किए गए ओवरराइटिंग परिवर्तन।

इसलिए यदि इकाई A में इकाई B का संदर्भ है, और उस संदर्भ को एनोटेट किया जाता है @CascadeType.REFRESH, और EntityManager.refresh(A)उसे बुलाया जाता है, तो EntityManager.refresh(B)निहित रूप से इसे भी कहा जाता है।


मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन ऊपर ए और बी के अपने उदाहरण का उपयोग करते हुए, यदि बी का उदाहरण वर्तमान में अलग हो गया है, तो क्या कैस्केडाइप.पर्सिस्ट के कारण बी लगातार बने रहेंगे? मैं हाइबरनेट के जेपीए कार्यान्वयन का उपयोग कर रहा हूं।
एंडी

4
मेरे ही सवाल का जवाब दिया। उत्तर है नहीं। आप इसे निरंतर बनने के लिए ऑब्जेक्ट पर सेव को कॉल करें।
एंडी

यदि मैं ऐसी वस्तु का विलय कर दूं जो स्थिर अवस्था में हो तो क्या होगा?
अभिजीत पाठक

9

ताज़ा करके पुनर्प्राप्ति: प्रबंधित ऑब्जेक्ट्स को रीफ़्रेश विधि का उपयोग करके डेटाबेस से पुनः लोड किया जा सकता है:

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

स्रोत: http://www.objectdb.com/java/jpa/persistence/retrieve

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.