जेपीए दृढ़ता में @Basic(optional = false)
और @Column(nullable = false)
के बीच क्या अंतर है?@ बेसिक (वैकल्पिक = झूठा) बनाम @ कॉलम (शून्य = झूठी) जेपीए
उत्तर
गॉर्डन योर्क (EclipseLink वास्तुकला समिति के सदस्य, TopLink कोर तकनीकी नेता, जेपीए 2.0 विशेषज्ञ समूह सदस्य) उसे टीका की तो बजाय इस विषय पर एक अच्छा जवाब लिखा, मैं his answer बोली होगी:
अंतर
optional
औरnullable
के बीच वह दायरा है जिस पर वे का मूल्यांकन किया जाता है। 'optional
' की परिभाषा संपत्ति और फ़ील्ड मानों के बारे में वार्ता और सुझाव देती है कि यह सुविधा रनटाइम के भीतर मूल्यांकन की जानी चाहिए। 'nullable
' केवल डेटाबेस कॉलम के संदर्भ में है।एक कार्यान्वयन तो
optional
लागू करने के लिए उन गुण हठ प्रदाता और एक अपवाद एसक्यूएल से पहले उठाया द्वारा स्मृति में मूल्यांकन किया जाना चाहिए अन्यथा डेटाबेस के लिए भेज दिया जाता है चुनता है जब 'updatable=false
' 'optional
' का उपयोग कर उल्लंघन की सूचना नहीं दी जाएगी।
तो, जो वास्तव में इस्तेमाल किया जाना चाहिए, शायद दोनों? –
@Xie Jilei: पुस्तक से: जावा दृढ़ता से हाइबरनेट 2007, पी। 17 9: '@ बेसिक (वैकल्पिक = झूठा) @ कॉलम (शून्य = झूठा)' @ बासिक एनोटेशन जावा ऑब्जेक्ट स्तर पर संपत्ति को वैकल्पिक नहीं है। कॉलम मैपिंग पर दूसरी सेटिंग, nullable = false, केवल नहीं है जो नल डेटाबेस डेटाबेस की पीढ़ी के लिए ज़िम्मेदार है। हाइबरनेट जेपीए कार्यान्वयन दोनों विकल्पों को किसी भी मामले में समान तरीके से व्यवहार करता है, इसलिए आप के रूप में अच्छी तरह से इस उद्देश्य के लिए एनोटेशन का उपयोग कर सकते हैं। – rapt
@rapt - मुझे समझ में नहीं आता है कि @ बासिक एनोटेशन संपत्ति को जावा ऑब्जेक्ट स्तर पर वैकल्पिक नहीं है। इसका क्या अर्थ है? तो, केवल '@ बेसिक' कहने जैसा है कि कहा गया चर के लिए डेटाबेस कॉलम 'नॉट न्यूल' बनाओ? –
तो मैं @Basic (वैकल्पिक = false) एनोटेशन जेपीए 2.1 (EclipseLink) का उपयोग करने की कोशिश की और यह पता चला है एनोटेशन वास्तविक उपयोग में (कम से कम एक स्ट्रिंग फ़ील्ड के लिए) नजरअंदाज कर दिया है। (उदा। entityManager.persist कॉल)।
तो मैं विनिर्देशन में गया और इसके बारे में पढ़ा।
http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/
बेसिक (वैकल्पिक):: क्षेत्र या संपत्ति के मूल्य अशक्त हो सकता है चाहे यहाँ कल्पना में क्या कहना है है। यह एक संकेत है और आदिम प्रकारों के लिए उपेक्षा है; इसका उपयोग स्कीमा पीढ़ी में किया जा सकता है।
तो मुझे लगता है कि यह वाक्य मूलभूत (वैकल्पिक) के वास्तविक उपयोग मामले को बताता है जिसका उपयोग स्कीमा पीढ़ी में किया जाता है। (यह है: जब आप जावा एंटिटी क्लासेस से क्रिएट टेबल एसक्यूएल जेनरेट करते हैं। उदाहरण के लिए हाइबरनेट कुछ ऐसा कर सकता है।)
- 1. @ManyToOne (वैकल्पिक = झूठा) बनाम @ कॉलम (nullable = false)
- 2. .setAttribute ("अक्षम", झूठा); झूठी
- 3. शून्य || झूठी और झूठी || रूबी
- 4. रिलीज मोड बनाम डीबग = "झूठा"
- 5. वैकल्पिक तालिका, शून्य कॉलम में शून्य सेट करें, पोस्टग्रेएसक्यूएल 9.1
- 6. जावा पर्सिस्टेंस/जेपीए: @ कॉलम बनाम @ बासिक
- 7. jquery: event.stopImmediatePropagation() बनाम झूठी झूठी
- 8. एनएलओजी - वैकल्पिक डेटाबेस कॉलम
- 9. @OneToOne (वैकल्पिक = झूठा) और @JoinColumn (nullable = false) एक साथ
- 10. वर्कर कॉलम: शून्य या
- 11. ईजेबी 3 - @ कॉलम (डालने योग्य = "झूठा") प्रश्न
- 12. जेपीए: डाटाबेस जेनरेटेड कॉलम
- 13. जावा स्विंग निपटान() बनाम सेट दृश्य (झूठा)
- 14. आईई वैकल्पिक कॉलम-गणना और कॉलम-गैप
- 15. जेपीए JoinColumn बनाम mappedBy
- 16. कॉलम बनाम बदलें कॉलम
- 17. एक्सएमएल सीरियलाइजेशन बनाम "ट्रू" और "झूठा"
- 18. System.Windows.Forms.Timer.Start()/Stop() बनाम सक्षम = सत्य/झूठा
- 19. सीडीआई: @ वैकल्पिक बनाम @ क्वालिफायर
- 20. web.config बैच = "झूठा"
- 21. दस्तावेज़ क्यों है। झूठा?
- 22. समूह एक शून्य कॉलम
- 23. विजुअल बेसिक में बैंग बनाम डिफ़ॉल्ट संपत्ति
- 24. बेसिक यूनिट टेस्ट बनाम यूनिट टेस्ट
- 25. jQuery प्लगइन्स बनाम यूआई बनाम कुछ वैकल्पिक
- 26. जेपीए @ आईडी और डालने योग्य = झूठी, अद्यतन करने योग्य = झूठी फेंकता अपवाद
- 27. जेपीए वनटॉनी: सूची बनाम सेट
- 28. जेपीए इकाइयां और/बनाम डीटीओ
- 29. पाइथन अगर कथन: झूठी बनाम 0.0
- 30. PSQLException: त्रुटि: कॉलम में शून्य मान शून्य-शून्य बाधा
डुप्लिकेट http://stackoverflow.com/questions/1383229/java-persistence-jpa-column-vs -बासिक – Schildmeijer
वास्तव में एक डुप्लिकेट नहीं है, सवाल गुणों के बारे में अधिक है, एनोटेशन नहीं। –