2009-09-10 22 views
61

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

परिभाषा के लिए यह

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

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

उत्तर

95

व्यक्तिगत कैस्केड टाइप विवरण थोड़ा उलझन में हो सकता है, लेकिन सामान्य मामले से इसे समझने का एक आसान तरीका है।

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

तो EntityManager.refresh() परिभाषित किया गया है के रूप में:

डेटाबेस से उदाहरण के राज्य को रिफ्रेश, संस्था के लिए किए गए परिवर्तनों को अधिलेखित, यदि कोई हो।

तो अगर इकाई एक इकाई बी के लिए एक संदर्भ है, और वह संदर्भ @CascadeType.REFRESH साथ टिप्पणी की जाती है, और EntityManager.refresh(A) कहा जाता है, तो EntityManager.refresh(B) परोक्ष भी कहा जाता है।

+0

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

+3

ने अपना खुद का प्रश्न उत्तर दिया। जवाब नहीं है। ऑब्जेक्ट पर लगातार बने रहने के लिए आपको कॉल करना होगा। – Andy

3

रिट्रीवल ताज़ा द्वारा: वह यह है कि

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

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

संबंधित मुद्दे