2012-04-04 20 views
6

के बीच अंतर आज मैं हाइबरनेट को ओआरएम के रूप में उपयोग करने का प्रयास कर रहा था। तो मुझे बनाने में संदेह था। उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है, हाइबरनेट मैपिंग फ़ाइल (.hbm फ़ाइल) या एनोटेशन? इसके पेशेवर और विपक्ष क्या हैं? समझने में मेरी मदद करें।हाइबरनेट मैपिंग फ़ाइल और एनोटेशन

उत्तर

12
  • कोई कार्यात्मक अंतर नहीं है। आप एक ही चीजों के साथ क्या कर सकते हैं (लगभग) दोनों दृष्टिकोण से पहले जावा एनोटेशन (1.5 में) जोड़ा था
  • एक्सएमएल फ़ाइलें इस्तेमाल किया गया है, ताकि वे
  • यह आम तौर पर जेपीए व्याख्या का उपयोग करना पसंद किया जाता है मानचित्रण का एक पुराना तरीका माना जा सकता है हाइबरनेट-विशिष्ट वाले के बजाय;

    http://en.wikipedia.org/wiki/Convention_over_configuration 
    

    एक्सएमएल फ़ाइलें हैं, जबकि सिर्फ विन्यास: - अगर एक्सएमएल का उपयोग कर वहाँ एक जेपीए XML स्वरूप है, जो देशी हाइबरनेट करने के लिए एक

+4

एक्सएमएल फाइलें पुरानी नहीं हैं। नया क्या जरूरी नहीं है। – Johanna

+1

"उन्हें माना जा सकता है"। मैंने जोर नहीं दिया कि वे हैं। मैंने यह भी ध्यान दिया कि कोई कार्यात्मक अंतर नहीं है। लेकिन कई मामलों में एनोटेशन बेहतर हैं। – Bozho

0

एनोटेशन विन्यास से अधिक सम्मेलन के सिद्धांत पर आधारित हैं प्राथमिकता दी जानी चाहिए है।

कॉन्फ़िगरेशन का उपयोग करके एनोटेशन का उपयोग करने के बारे में कई चर्चाएं हैं।

stackoverflow link

देखने की मेरी बात से, मैं एनोटेशन पसंद करते हैं क्योंकि यह लिखने के लिए और बनाए रखने के लिए आसान है।

+1

कॉन्फ़िगरेशन पर सम्मेलन के सिद्धांत के आधार पर मुझे एनोटेशन के साथ सम्मान से असहमत होना होगा। टिप्पणियां बिल्कुल सम्मेलनों के बारे में नहीं हैं। यह एक्सएमएल से कॉन्फ़िगरेशन का एक वैकल्पिक माध्यम है। – M7Jacks

4

एक्सएमएल दृष्टिकोण का उपयोग करने के लिए एक अच्छा उपयोग-मामला यह है कि यदि आप ऐसी वस्तुओं को बनाए रखते हैं जो किसी अन्य उपयोगिता द्वारा उत्पन्न किए गए हैं और इसलिए एनोटेट नहीं किया जा सकता है।

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

+0

बाहरी स्रोतों से वस्तुओं की दृढ़ता का जिक्र करने के लिए धन्यवाद, इसके बारे में सोचा नहीं था। –

8

प्रश्न यह है कि आपका स्वाद क्या है - दोनों तरीके (ज्यादातर) समान कर सकते हैं, अंतर यह है कि कैसे लिखना है।

एनोटेशन के साथ आपके पास जावा सदस्य चर/गेटर और मैपिंग सीधे एक स्थान पर है।

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

मेरी राय में xml मैपिंग फ़ाइलें डेटाबेस और एप्लिकेशन के बेहतर डिज़ाइन के लिए सहायता करती हैं। एनोनेशंस जावा क्लास -> मैपिंग -> डेटाबेस टेबल, जो गलत दिशा है (डेटाबेस हमेशा पहले डिजाइन किया जाना चाहिए - डेटाबेस डेटाबेस को बाद में बदलना चाहिए बहुत प्रयास है - अधिकांश प्रदर्शन लीक खराब डेटाबेस डिज़ाइन में हैं - जावा कक्षाओं को आसानी से बदला जा सकता है)।

यदि एक्सएमएल फाइलों का एक कार्यात्मक लाभ है: यदि आपके पास संरचनात्मक मतभेदों के साथ अलग-अलग डेटाबेस हैं, उदाहरण के लिए एक ओरेकल डेटाबेस और एक MySQL डेटाबेस, शायद तालिका नामों और डेटा प्रकारों में कुछ अंतर, फिर एक डेटाबेस से अपने एप्लिकेशन को पोर्ट करने के लिए दूसरे को आपको केवल कुछ नई मैपिंग फाइलें लिखनी होंगी। आपको जावा कोड की एक पंक्ति को बदलने की आवश्यकता नहीं है। एनोटेशन के साथ यह संभव नहीं है।

मैं एक्सएमएल मैपिंग फ़ाइलों का उपयोग करना पसंद करता हूं। यह है स्वाद।

2

यह वह जगह है कि यह कैसे "ट्यूटोरियल सूत्री" में कहते हैं

"आप अन्य EJB 3 अनुरूप ORM आवेदन करने के लिए पोर्टेबल आपके आवेदन करने जा हैं, तो आप मैपिंग जानकारी है लेकिन अभी भी यदि प्रतिनिधित्व करने के लिए एनोटेशन का उपयोग करना चाहिए आप अधिक लचीलापन चाहते हैं तो आपको एक्सएमएल-आधारित मैपिंग्स के साथ जाना चाहिए "

मेरे लिए मैं एनोटेशन की तुलना में एक्सएमएल कॉन्फ़िगरेशन फ़ाइल पसंद करूंगा। क्योंकि तब हम न्यूनतम कोड परिवर्तनों के साथ परिवर्तन कर सकते हैं।

-1

जावा भाषा के साथ एनोटेशन विकसित किए गए हैं और जावा डेवलपर को एक्सएमएल की तुलना में सीखना आसान है। और रीयल टाइम टेबल नामों और कॉलम नामों में एक और बिंदु 99% तय किया गया है, इसलिए जावा कोड को बदलने की कोई आवश्यकता नहीं है लेकिन यदि आप अक्सर टेबल नाम और कॉलम नाम बदलना चाहते हैं तो आप एक्सएमएल अंततः cfg.xml फ़ाइल के साथ स्थानांतरित करेंगे मनानात्मक क्योंकि डेटाबेस बदल सकता है।

+0

हाय, स्टैक ओवरफ्लो में आपका स्वागत है। अपने प्रश्न को समझना वाकई मुश्किल है, क्या आप इसे एक कोड उदाहरण या कुछ अन्य संकेत देने में सुधार कर सकते हैं? –

संबंधित मुद्दे