एक-से-कई संबंधों पर काम करने के बाद से एक @OneToManyऔर @ElementCollectionएनोटेशन का उपयोग करने में क्या अंतर है ?
एक-से-कई संबंधों पर काम करने के बाद से एक @OneToManyऔर @ElementCollectionएनोटेशन का उपयोग करने में क्या अंतर है ?
जवाबों:
मेरा मानना @ElementCollectionहै कि मुख्य रूप से गैर-संस्थाओं (एम्बेड करने योग्य या बुनियादी) की मैपिंग के लिए है, जबकि @OneToManyइसका उपयोग संस्थाओं को मैप करने के लिए किया जाता है। तो जो आप उपयोग करना चाहते हैं उस पर निर्भर है।
ElementCollectionएक मानक जेपीए एनोटेशन है, जिसे अब मालिकाना हाइबरनेट एनोटेशन पर पसंद किया जाता है CollectionOfElements।
इसका मतलब है कि संग्रह संस्थाओं का संग्रह नहीं है, बल्कि सरल प्रकारों (स्ट्रिंग्स, आदि) का संग्रह या एम्बेड करने योग्य तत्वों का संग्रह (वर्ग एनोटेट के साथ @Embeddable) है।
इसका अर्थ यह भी है कि तत्व पूरी तरह से युक्त संस्थाओं के स्वामित्व में हैं: वे संशोधित किए जाते हैं जब इकाई को संशोधित किया जाता है, इकाई को हटाए जाने पर हटा दिया जाता है, आदि। उनका अपना जीवनचक्र नहीं हो सकता है।
@ElementCollectionजब आप सरल या एम्बेडेड प्रकार के साथ एक-से-कई संबंधों को लागू करना चाहते हैं, तो आपको कोड को सरल बनाने की अनुमति देता है। उदाहरण के लिए JPA 1.0 में जब आप s- की सूची में एक-से-कई संबंध Stringबनाना चाहते थे, तो आपको एक साधारण इकाई POJO ( StringWrapper) बनाना होगा जिसमें केवल प्राथमिक कुंजी हो और Stringप्रश्न में:
@OneToMany
private Collection<StringWrapper> strings;
//...
public class StringWrapper {
@Id
private int id;
private String string;
}
JPA 2.0 के साथ आप बस लिख सकते हैं:
@ElementCollection
private Collection<String> strings;
सरल, है ना? ध्यान दें कि आप अभी भी @CollectionTableएनोटेशन का उपयोग करके तालिका और स्तंभ नामों को नियंत्रित कर सकते हैं ।
बेसिक या एंबेडेड : @ElementCollection
Entities : @OneToMany या @ManyToMany
@ElementCollection:
@OneToMany / @ManyToMany:
ElementCollection मैपिंग, या उनके संग्रह के लिए तालिका को ओवरराइड कर सकता है, इसलिए आपके पास कई इकाइयां एक ही एम्बेड करने योग्य वर्ग का संदर्भ हो सकती हैं, लेकिन प्रत्येक ने अपनी निर्भर वस्तुओं को एक अलग तालिका में संग्रहीत किया है।