स्प्रिंग का उपयोग करके हाइबरनेट 4 में एनोटेशन के साथ संबंधों को परिभाषित करना
प्रदान की गई कक्षाओं के लिए हाइबरनेट 4 में एनोटेशन का उपयोग करके विभिन्न प्रकार के संबंधों को लागू करना, फू और बार, आइए विशिष्टताओं पर ध्यान दें।
एक-से-अनेक यूनी-डायरेक्शनल संबंध:
फू क्लास को @OneToMany एनोटेशन और एक सूची के साथ कॉन्फ़िगर करें बार> संपत्ति। बार वर्ग को अपरिवर्तित छोड़ दें। यह एक-से-अनेक संबंध स्थापित करता है जहां Foo में एकाधिक संबद्ध Bar ऑब्जेक्ट हो सकते हैं, लेकिन Bar Foo को वापस संदर्भित नहीं कर सकता है।
द्वि-दिशात्मक एक-से-अनेक संबंध (Foo.class द्वारा प्रबंधित) ):
Foo.class पर कैस्केड = कैस्केडटाइप.ALL के साथ @OneToOne एनोटेशन का उपयोग करें। Bar.class पर कॉलम निर्दिष्ट करते हुए एक @JoinColumn एनोटेशन जोड़ें जिसका उपयोग शामिल होने के लिए किया जाना चाहिए। Bar.class के लिए, @OneToOne एनोटेशन का उपयोग करें और यह इंगित करने के लिए मैप्डबी = "बार" निर्दिष्ट करें कि संबंध Foo.class द्वारा प्रबंधित किया जाता है।
उपयोगकर्ता का उपयोग करके एक-से-कई यूनी-डायरेक्शनल संबंध- प्रबंधित जॉइन टेबल:
एक अलग जॉइन टेबल निर्दिष्ट करने के लिए @JoinTable एनोटेशन के साथ @OneToMany एनोटेशन को नियोजित करें। दोनों तरफ @JoinColumn एनोटेशन के साथ जॉइन कॉलम को परिभाषित करें। यदि आवश्यक हो, तो जॉइन टेबल का प्रतिनिधित्व करने के लिए एक अतिरिक्त वर्ग का उपयोग करें। संबंध मैप करने के लिए @OneToMany(mappedBy = "bar") का उपयोग करें। Bar.class पर, @JoinColumn एनोटेशन के साथ @ManyToOne(cascade = { CascadeTyep.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) का उपयोग करें।
हाइबरनेट का उपयोग करते हुए द्वि-दिशात्मक मैनी-टू-मैनी -प्रबंधित जॉइन टेबल:
Foo.class और Bar.class दोनों पर @ManyToMany का उपयोग करें, और जॉइन कॉलम को निर्दिष्ट करते हुए, जॉइन टेबल के लिए @JoinTable एनोटेशन का उपयोग करें।
उपयोगकर्ता-प्रबंधित जॉइन टेबल ऑब्जेक्ट का उपयोग करके द्वि-दिशात्मक मैनी-टू-मैनी:
यूनी-डायरेक्शनल वन-टू-मैनी उदाहरण के समान, @JoinTable एनोटेशन के साथ @OneToMany का उपयोग करें। जॉइन टेबल को दर्शाने के लिए एक अलग क्लास बनाएं और @ManyToOne का उपयोग करके Foo.class और Bar.class दोनों पर संबंध मैप करें।
फ़ेच प्रकार का निर्धारण:
fetchType का उपयोग करें .संबंधित संग्रहों को एक्सेस होने तक लोड करने में देरी करना आलसी है। संग्रह को तुरंत लोड करने के लिए FetchType.EAGER का उपयोग करें, लेकिन ध्यान दें कि यह प्रदर्शन को प्रभावित कर सकता है। विशिष्ट उपयोग के मामलों के लिए आलसी लोड किए गए संग्रह को मैन्युअल रूप से प्रारंभ करने के लिए अपनी सेवा कक्षा में Hiberate.initialize() का उपयोग करने पर विचार करें।
कैस्केड दिशा निर्धारित करना:
@Cascade एनोटेशन का उपयोग करें कैस्केडिंग विकल्प निर्दिष्ट करें. आम तौर पर, मालिकाना रिश्ते की दिशा में कैस्केड परिवर्तन होता है। यदि एप्लिकेशन के संदर्भ में इसका कोई मतलब नहीं है, तो बच्चे से माता-पिता तक कैस्केडिंग अपडेट या विलोपन से बचें। @OneToMany एनोटेशन में हाइबरनेट स्वचालित रूप से अनाथ वस्तुओं को हटा देता है (यानी, जो किसी अन्य मूल वस्तु से जुड़े नहीं हैं) जब उन्हें मूल वस्तु पर संग्रह से हटा दिया जाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3