दिलचस्प पोस्ट
वैश्विक ध्वज के साथ एक RegExp गलत परिणाम क्यों दे रहा है? मैं कैसे बता सकता हूं कि एचटीटीपी क्लाइंट का समय समाप्त हो गया है? कैसे एक Scss stylehsheets से केवल चर और mixins आयात कर सकते हैं? SQL सर्वर एक्सप्रेस संस्करण में कार्य कैसे बनाएं एंड्रॉइड में मैं कैसे गतिशील रूप से दृश्य की स्थिति निर्धारित कर सकता हूं? रूबी मॉड्यूल में प्रत्येक विधि कॉल के लिए कोड कार्यान्वित करना ऐड डीबग में है, तो क्यों Gradle रिलीज़ मोड में मेरे मॉड्यूल का निर्माण करता है सी + + नामस्थान सलाह एंड्रॉइड – एक उरी से एक इनटस्टस्ट्रीम को एक बाइट सरणी में ले जा रहा है? Android EditText में दशमलव स्थानों को सीमित करें क्या मुझे हमेशा- viewDidLoad विधि में को कॉल करना है? पायथन में परिपत्र आयात से कैसे बचें? पायथन के साथ SQL को पार्स करना पांडुओं में शामिल होने का उपयोग करके vlookup बिटटॉरेंट चुंबक लिंक कैसे काम करते हैं?

सीतनिद्रा में होना / जेपीए – एनोटेटिंग बीन विधि बनाम फ़ील्ड

सीतनिद्रा में होना के उपयोग के बारे में मेरे पास एक सरल सवाल है मैं एक वर्ग के क्षेत्रों की व्याख्या करके और इसी सेम पर प्राप्त विधि की व्याख्या के जरिए जेपीए एनोटेशन का उपयोग करके दो तरीकों से लोगों को देख रहा हूं।

मेरा प्रश्न निम्नानुसार है: क्या जेपीए एनोएशन जैसे कि @आईडी के साथ खेतों और बीन के तरीकों के बीच अंतर है।

उदाहरण:

@Entity public class User { **@ID** private int id; public int getId(){ return this.id; } public void setId(int id){ this.id=id; } } 

———– या ———–

 @Entity public class User { private int id; **@ID** public int getId(){ return this.id; } public void setId(int id){ this.id=id; } } 

Solutions Collecting From Web of "सीतनिद्रा में होना / जेपीए – एनोटेटिंग बीन विधि बनाम फ़ील्ड"

हां, मेरा मानना ​​है कि आप फ़ील्ड बनाम संपत्ति पहुंच पर खोज करना चाहते हैं:

सीतनिद्रा में होना एनोटेशन – कौन सा बेहतर है, क्षेत्र या संपत्ति का उपयोग?

स्प्रिंग वरीयता क्षेत्र का उपयोग है । यही मैं पालन करता हूं।

हां, यदि आप फ़ील्ड की व्याख्या करते हैं, तो सीतनिद्रा में होना फ़ील्ड के उपयोग को निर्धारित करने के लिए और उन क्षेत्रों को प्राप्त करने के लिए उपयोग करेगा। यदि आप विधियों का एनोटेट करते हैं, तो हाइबरनेट गेटर्स और सेटर्स का उपयोग करेगा। हाइबरनेट @Id एनोटेशन के स्थान के आधार पर पहुंच पद्धति को चुन @Id और मेरे ज्ञान के साथ आप मिश्रण और मैच नहीं कर सकते। अगर आप @Id साथ किसी क्षेत्र को टिप्पणी करते हैं, तो तरीकों पर टिप्पणियों को नजरअंदाज किया जाएगा और वीजा के विपरीत होगा आप मैन्युअल रूप से क्लास स्तरीय एनोटेशन @AccessType साथ विधि सेट कर सकते हैं

हाइबरनेट एनोटेशन रेफरेंस गाइड इस तरह के प्रश्नों के लिए एक अत्यंत उपयोगी संसाधन साबित हुआ है और विवरण कैसे पदानुक्रमों के नीचे तक पहुंच के प्रकार का कैसकेड करते हैं।

आप एक्सेसर्स को क्यों एनोटेट करेंगे? यह सिर्फ सादे गंदे दिखता है और बनाए रखने के लिए एक दर्द है। अब मुझे पता है कि जेपीए या सीतनिद्रा में होना कितना लागू होता है। ईलेप्से के लिए कुछ हाइबरनेट कोड पीढ़ी प्लगिन के साथ काम करते समय यह डिफ़ॉल्ट है और यह मुझे बोकर चालकों को चलाता है।

यह उल्लेख करने के लिए नहीं कि हम किसी अन्य कारण से एक्सेसर्स का उपयोग संपत्ति के अभिगम या संदर्भ माता-पिता या अन्य वस्तु के तर्क को जोड़ना चाहते हैं जो कथित एनोटेशन के साथ अच्छी तरह से लागू नहीं होता है।

मेरी सिफारिश विधियों का विवरण देना है ऐसा करने से, आपको थोड़ा लचीलापन प्राप्त होता है उदाहरण के लिए, मान लें कि आपके पास कुछ कक्षाएं हैं:

  • AbstractEntity
  • StringIdEntity
  • AutoIdEntity

AbstractEntity एडिट फील्ड / गेटर / सेटर परिभाषित करता है StringIdEntity और AutoIdEntity कक्षाएं StringIdEntity से प्राप्त होती हैं, लेकिन अलग-अलग @Id रणनीतियां का उपयोग करें यदि आप फ़ील्ड को एनोटेट करते हैं, तो आप इसे कक्षा से दूसरे में बदल नहीं सकते।

यदि आप विधियों का एनोटेट करते हैं, तो आप getId() को @Transient/abstract getId() @Transient/abstract में AbstractEntity में चिह्नित getId() और फिर उप-कक्षाओं में, आप विधि को ओवरराइड करते हैं और उस रणनीति को लागू करते हैं जिसे आप उपयोग करना चाहते हैं। मैं खुद खेतों की व्याख्या करता था और इस पर दौड़ता रहा और निर्णय लिया कि मैं हमेशा आगे बढ़ने के तरीकों का विवरण देगा।

इसलिए, यहां तक ​​कि अगर आप तत्काल टिप्पणियों के लाभों को नहीं देखते हैं, तो आपके पास इतने सारे वर्ग हैं जब स्विचिंग एक पूर्ण सिरदर्द बनने वाला है, यह रेखा के नीचे स्पष्ट हो सकता है।

क्या अन्य जेपीए के कार्यान्वयन के लिए ही हाइबरनेट करने का जवाब है?

कई चर्चाएं उपलब्ध हैं जो संपत्ति पर FIELD का उपयोग करने के लिए बढ़त देती हैं (देखें – http://java.dzone.com/tips/12-feb-jpa-20-why-accesstype )। यहां तक ​​कि स्प्रिंग फ़्रेमवर्क ने संपत्ति पर FIELD का उपयोग करने की भी सिफारिश की है (देखें – http://static.springsource.org/spring/docs/2.5.x/reference/orm.html ) मुझे केवल FIELD और क्लीनर दृष्टिकोण ही नहीं मिल रहा है क्योंकि आप सेटर्स / गेटर्स को लागू करने के लिए मजबूर नहीं हैं बल्कि आप अपने क्लास में अपने कस्टम टाइप सेटर्स / गेटर्स को प्राप्त कर सकते हैं। तो एक बेहतर एनकैप्सुलेशन और अधिक साफ वर्ग प्रदर्शन के अनुसार FIELD संपत्ति पर थोड़ी बढ़त है लेकिन जो नगण्य है।

एक पंक्ति में संपत्ति पर FIELD का उपयोग करें प्रॉपर्टी का उपयोग करें यदि वास्तव में इसकी आवश्यकता है