जेपीए में @Column
और @Basic
एनोटेशन के बीच क्या अंतर है? क्या वे एक साथ इस्तेमाल किया जा सकता है? उन्हें एक साथ इस्तेमाल किया जाना चाहिए? या उनमें से एक पर्याप्त है?जावा पर्सिस्टेंस/जेपीए: @ कॉलम बनाम @ बासिक
उत्तर
@Basic
का प्रतीक है कि एक विशेषता कायम किया जा रहा है और एक मानक मानचित्रण इस्तेमाल किया जा रहा है। इसमें पैरामीटर हैं जो आपको यह निर्दिष्ट करने की अनुमति देते हैं कि विशेषता आलसी लोड होनी चाहिए और क्या यह शून्य है।@Column
आपको डेटाबेस में कॉलम का नाम निर्दिष्ट करने की अनुमति देता है जिस पर विशेषता जारी रहनी है।
आप दूसरे के बिना एक निर्दिष्ट करते हैं तो आप डिफ़ॉल्ट व्यवहार जो समझदार है मिलता है, तो आमतौर पर लोगों को विशेष मामलों को छोड़कर केवल एक का उपयोग करें।
तो अगर हम एक विशेषता की एक आलसी लोड हो रहा है चाहता था और एक स्तंभ नाम निर्दिष्ट करने के हम कह सकते हैं
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
हम तो डिफ़ॉल्ट, गैर आलसी व्यवहार neeed हैं, बस @Column
पर्याप्त हो गया होता।
@ डीजेना के उत्तर के अतिरिक्त, यह ध्यान देने योग्य है कि @Basic
@OneToMany
, @ManyToOne
और @ManyToMany
के साथ तुलना की जानी चाहिए। इनमें से केवल एक ही संपत्ति पर निर्दिष्ट किया जा सकता है। डेटाबेस कॉलम गुणों का वर्णन करने के लिए @Column
और @JoinColumn
इनमें से किसी के साथ निर्दिष्ट किया जा सकता है। ये एनोटेशन के दो सेट हैं जिनका उपयोग एक साथ किया जा सकता है, लेकिन एक समय में प्रत्येक सेट का केवल एक एनोटेशन इस्तेमाल किया जा सकता है।
यह ध्यान देने योग्य है कि बुनियादी आदिम क्षेत्रों
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
एक बुनियादी विशेषता एक जहाँ विशेषता वर्ग जैसे स्ट्रिंग, संख्या, दिनांक या एक आदिम एक सरल प्रकार है है के लिए डिज़ाइन किया गया है लायक है। एक मूल विशेषता का मान सीधे डेटाबेस में कॉलम मान पर मैप कर सकता है।
समर्थित प्रकार और रूपांतरण जेपीए कार्यान्वयन और डेटाबेस प्लेटफ़ॉर्म पर निर्भर करते हैं। किसी प्रकार का उपयोग करने वाली कोई मूल विशेषता जो किसी डेटाबेस प्रकार पर सीधे मैप नहीं करती है उसे बाइनरी डेटाबेस प्रकार में क्रमबद्ध किया जा सकता है।
जेपीए में मूल विशेषता को मैप करने का सबसे आसान तरीका कुछ भी नहीं करना है। कोई भी विशेषता जिनके पास कोई अन्य एनोटेशन नहीं है और अन्य संस्थाओं का संदर्भ नहीं है, उन्हें मूल रूप से मूल रूप से मैप किया जाएगा, और यदि मूल प्रकार नहीं है तो भी क्रमबद्ध किया जाएगा। विशेषता के लिए कॉलम नाम डिफॉल्ट किया जाएगा, जिसे नाम नाम के रूप में नाम दिया गया है, अपरकेस के रूप में।
अच्छा नोट। धन्यवाद। –
तो इसका मतलब यह नहीं है कि आपको गैर-प्राइमेटिव्स के लिए @ कॉलम निर्दिष्ट करना है, है ना? .. – Amalgovinus
नहीं, यदि कोई कॉलम एनोटेशन निर्दिष्ट नहीं है, तो डिफ़ॉल्ट मान लागू होते हैं (नाम एक विशेषता होगी)। – Gab
- 1. जावा - जेपीए @ बासिक और @ एम्बेडेड एनोटेशन
- 2. कॉलम बनाम बदलें कॉलम
- 3. एसक्यूएल: प्राथमिक कुंजी कॉलम। कृत्रिम "आईडी" कॉलम बनाम "प्राकृतिक" कॉलम
- 4. एकाधिक कॉलम संरचना जावा
- 5. एकल कॉलम बनाम एकाधिक कॉलम इंडेक्स के प्रदर्शन ओवरहेड
- 6. टेबलमोडेल बनाम कॉलम मॉडल: कॉलम मान का मालिक कौन है?
- 7. दो सिंगल-कॉलम इंडेक्स बनाम MySQL में एक दो कॉलम इंडेक्स बनाम?
- 8. सी # बनाम जावा जेनरिक
- 9. जावा सूची बनाम ArrayList
- 10. जावा सुरक्षा बनाम ESAPI
- 11. जावा बनाम क्लोजर
- 12. जावा अधिभार बनाम ओवरराइटिंग
- 13. पैकेज बनाम जावा प्रतिबिंब
- 14. जावा: तुलनीय तुलनाकारी बनाम
- 15. जावा स्टेटिक बनाम इंस्टेंस
- 16. जावा: CopyOnWriteArrayList बनाम सिंक्रनाइज़लिस्ट
- 17. जावा गणना बनाम इटरेटर
- 18. जावा: LockSupport.parkNanos बनाम Thread.Sleep (...)
- 19. जावैक्स बनाम जावा पैकेज
- 20. जावा बनाम पायथन
- 21. जावा बनाम सी संदर्भ
- 22. प्रसंस्करण बनाम (सादा) जावा
- 23. पाइथन बनाम जावा
- 24. जावा बनाम .NET
- 25. जावा: डबल बनाम फ्लोट
- 26. पायथन बनाम जावा?
- 27. जावा बनाम सी
- 28. Boolean.getBoolean() बनाम System.getenv() जावा
- 29. जावा ईई बनाम स्टैंडअलोन
- 30. नेट बनाम जावा जॉब्स
यह एक स्पष्ट उत्तर है। धन्यवाद। तो मुझे लगता है कि कोई '@ बेसिक' का उपयोग '@ कॉलम 'के बिना कर सकता है, यही कारण है कि' वैकल्पिक 'और' शून्य 'गुण दोनों में मौजूद हैं। क्या मैं सही हू? –
मैं @ बेसिक के नामुमकिन और @ कॉलम के नामुमकिन और न तो या तो दोनों को निर्दिष्ट करने के प्रभाव पर जेपीए स्पेक को पूरी तरह से समझने का दावा नहीं करता हूं। @ बेसिक नालीबल को स्कीमा पीढ़ी के रिलीज के साथ "संकेत" के रूप में वर्णित किया गया है। @ कॉलम nullable डेटाबेस में कॉलम की विशेषताओं को परिभाषित करने के रूप में वर्णित है। मेरा अभ्यास @ कॉलम केस का उपयोग करना होगा। – djna
@ बासिक (वैकल्पिक) डीबी को बचाने से पहले दृढ़ता प्रदाता द्वारा रनटाइम पर चेक किया जाना चाहिए (होना चाहिए)।@ कॉलम डेटाबेस में एक कॉलम परिभाषा है और इसका उपयोग स्कीमा पीढ़ी के लिए किया जाता है: http://stackoverflow.com/questions/2899073/basicoptional-false-vs-columnnullable-false-in-jpa –