@cascade (cascadeType.Delete) और कैस्केड = कैस्केड टाइप के बीच अंतर। डेले - जावा, हाइबरनेट

मैं हाइबरनेट करने के लिए नया हूं।एक ऐसे प्रोजेक्ट में जिसका मैं "उपयोग कर रहा हूँ" का उपयोग किया गया है @ कैस्केड (CascadeType.DELETE) @ManyToOne इकाई वर्ग में एनोटेशन। लेकिन मुझे एक और एनोटेशन मिला @ManyToOne (कैस्केड = CascadeType.DELETE, fetch = FetchType.LAZE)। क्या इन दोनों टिप्पणियों में कोई अंतर है। यदि मतभेद हैं तो कृपया स्पष्ट करें।

उत्तर:

जवाब के लिए 0 № 1

जावदोक यह सब कहता है। Cascade जावाडोक कहते हैं:

एक संघ पर एक झरना रणनीति लागू करें। लगाते थे हाइबरनेट विशिष्ट कैस्केड। JPA कैस्केडिंग के लिए, OneToOne, OneToMany, आदि पर कैस्केडाइप का उपयोग करना पसंद करें। हाइबरनेट एक साथ कैस्केड के दोनों सेटों में विलय कर देगा।

(जोर मेरा)

और के javadoc CascadeType.DELETE कहते हैं;

हाइबरनेट देशी DELETE कार्रवाई के अनुरूप है।

इसलिए, यदि आप मानक JPA API से चिपके रहते हैं यासत्र की विधियाँ जो मानक JPA विधियाँ हैं (जारी रहती हैं), मर्ज (), निकालें (), इत्यादि), तो आपको कभी भी हाइबरनेट के स्वामित्व वाले Cascade एनोटेशन का उपयोग नहीं करना चाहिए।

लेकिन अगर आप हाइबरनेट-मालिकाना तरीकों का उपयोग करते हैं जैसेsave (), saveOrUpdate (), अपडेट (), डिलीट (), और आप उन तरीकों पर लागू कैस्केडिंग चाहते हैं, तो आपको कैस्केड का उपयोग करने की आवश्यकता होगी, क्योंकि व्यवहार को निर्दिष्ट करने के लिए JPA मानक घोषणाओं का उपयोग करने का कोई तरीका नहीं है वे विधियाँ जो जेपीए में मौजूद नहीं हैं (कैस्केड के अलावा = सभी, जो सभी कार्यों को कवर करती है, यहां तक ​​कि हाइबरनेट-विशिष्ट भी)


संबंधित सवाल
सबसे लोकप्रिय